匹配中文字符的正則表達式:
?[\u4e00-\u9fa5]
匹配雙字節字符
(
包括漢字在內
)
:
[^\x00-\xff]
應用:計算字符串的長度(一個雙字節字符長度計
2
,
ASCII
字符計
1
)
String.prototype.len=function(){return?this.replace([^\x00-\xff]/g,"aa").length;}
匹配空行的正則表達式:
\n[\s|?]*\r
匹配
HTML
標記的正則表達式:
/<(.*)>.*<\/\1>|<(.*)?\/>/?
匹配首尾空格的正則表達式:
(^\s*)|(\s*$)
應用:
javascript
中沒有像
vbscript
那樣的
trim
函數,我們就可以利用這個表達式來實現,如下:
String.prototype.trim?=?function()
{
return?this.replace(/(^\s*)|(\s*$)/g,?"");
}
利用正則表達式分解和轉換
IP
地址:
下面是利用正則表達式匹配
IP
地址,并將
IP
地址轉換成對應數值的
Javascript
程序:
function?IP2V(ip)
{
re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g?//
匹配
IP
地址的正則表達式
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!")
}
}
不過上面的程序如果不用正則表達式,而直接用
split
函數來分解可能更簡單,程序如下:
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
地址的正則表達式:
\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配網址
URL
的正則表達式:
http://(
[\w-]+\.)+[\w-]+(/[\w-?./?%&=]*)?
利用正則表達式去除字串中重復的字符的算法程序:
[
注:此程序不正確,原因見本貼回復
]
var?s="abacabefgeeii"
var?s1=s.replace(/(.).*\1/g,"$1")
var?re=new?RegExp("["+s1+"]","g")
var?s2=s.replace(re,"")?
alert(s1+s2)?//
結果為:
abcefgi
這個方法對于字符順序有要求的字符串可能不適用。
得用正則表達式從
URL
地址中提取文件名的
javascript
程序,如下結果為
page1
s="http://www.9499.net/page1.htm"
s=s.replace(/(.*\/){0,}([^\.]+).*/ig,"$2")
alert(s)
利用正則表達式限制網頁表單里的文本框輸入內容:
用正則表達式限制只能輸入中文:
onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')"?onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"
用正則表達式限制只能輸入全角字符:
?onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')"?onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))"
用正則表達式限制只能輸入數字:
onkeyup="value=value.replace(/[^\d]/g,'')?"onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"
用正則表達式限制只能輸入數字和英文:
onkeyup="value=value.replace(/[\W]/g,'')?"onbeforepaste="clipboardData.setData
幾個常用正則表達式:
('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/,