匹配中文字符的正則表達(dá)式:
?[\u4e00-\u9fa5]
匹配雙字節(jié)字符
(
包括漢字在內(nèi)
)
:
[^\x00-\xff]
應(yīng)用:計(jì)算字符串的長(zhǎng)度(一個(gè)雙字節(jié)字符長(zhǎng)度計(jì)
2
,
ASCII
字符計(jì)
1
)
String.prototype.len=function(){return?this.replace([^\x00-\xff]/g,"aa").length;}
匹配空行的正則表達(dá)式:
\n[\s|?]*\r
匹配
HTML
標(biāo)記的正則表達(dá)式:
/<(.*)>.*<\/\1>|<(.*)?\/>/?
匹配首尾空格的正則表達(dá)式:
(^\s*)|(\s*$)
應(yīng)用:
javascript
中沒(méi)有像
vbscript
那樣的
trim
函數(shù),我們就可以利用這個(gè)表達(dá)式來(lái)實(shí)現(xiàn),如下:
String.prototype.trim?=?function()
{
return?this.replace(/(^\s*)|(\s*$)/g,?"");
}
利用正則表達(dá)式分解和轉(zhuǎn)換
IP
地址:
下面是利用正則表達(dá)式匹配
IP
地址,并將
IP
地址轉(zhuǎn)換成對(duì)應(yīng)數(shù)值的
Javascript
程序:
function?IP2V(ip)
{
re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g?//
匹配
IP
地址的正則表達(dá)式
if(re.test(ip))
{
return?RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1
}
else
{
throw?new?Error("Not?a?valid?IP?address!")
}
}
不過(guò)上面的程序如果不用正則表達(dá)式,而直接用
split
函數(shù)來(lái)分解可能更簡(jiǎn)單,程序如下:
var?ip="10.100.20.168"
ip=ip.split(".")
alert("IP
值是:
"+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1))
匹配
Email
地址的正則表達(dá)式:
\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配網(wǎng)址
URL
的正則表達(dá)式:
http://(
[\w-]+\.)+[\w-]+(/[\w-?./?%&=]*)?
利用正則表達(dá)式去除字串中重復(fù)的字符的算法程序:
[
注:此程序不正確,原因見(jiàn)本貼回復(fù)
]
var?s="abacabefgeeii"
var?s1=s.replace(/(.).*\1/g,"$1")
var?re=new?RegExp("["+s1+"]","g")
var?s2=s.replace(re,"")?
alert(s1+s2)?//
結(jié)果為:
abcefgi
這個(gè)方法對(duì)于字符順序有要求的字符串可能不適用。
得用正則表達(dá)式從
URL
地址中提取文件名的
javascript
程序,如下結(jié)果為
page1
s="http://www.9499.net/page1.htm"
s=s.replace(/(.*\/){0,}([^\.]+).*/ig,"$2")
alert(s)
利用正則表達(dá)式限制網(wǎng)頁(yè)表單里的文本框輸入內(nèi)容:
用正則表達(dá)式限制只能輸入中文:
onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')"?onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"
用正則表達(dá)式限制只能輸入全角字符:
?onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')"?onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))"
用正則表達(dá)式限制只能輸入數(shù)字:
onkeyup="value=value.replace(/[^\d]/g,'')?"onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"
用正則表達(dá)式限制只能輸入數(shù)字和英文:
onkeyup="value=value.replace(/[\W]/g,'')?"onbeforepaste="clipboardData.setData
幾個(gè)常用正則表達(dá)式:
('text',clipboardData.getData('text').replace(/[^\d]/g,''))"?
Email?:?/^\w+([-+.]\w+)*@\w+([-.]\\w+)*\.\w+([-.]\w+)*$/,????
Phone?:?/^((\(\d{3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}$/,????
Mobile?:?/^((\(\d{3}\))|(\d{3}\-))?13\d{9}$/,????
Url?:?/^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/,????
IdCard?:?/^\d{15}(\d{2}[A-Za-z0-9])?$/,????
Currency?:?/^\d+(\.\d+)?$/,
Number?:?/^\d+$/,????
Zip?:?/^[1-9]\d{5}$/,????
QQ?:?/^[1-9]\d{4,8}$/,????
Integer?:?/^[-\+]?\d+$/,????
Double?:?/^[-\+]?\d+(\.\d+)?$/,????
English?:?/^[A-Za-z]+$/,????
Chinese?:??/^[\u0391-\uFFE5]+$/,????
UnSafe?:/^(([A-Z]*|[a-z]*|\d*|[-_\~!@#\$%\^&\*\.\(\)\[\]\{\}<>\?\\\/\'\"]*)|.{0,5})$|\s/,