JavaScript正则表达式(三)
验证
正则表达式
纯数字
^[0-9]*$ 或者 ^\d*$
n位的数字
^\d{n}$
至少n位的数字
^\d{n,}$
m-n位的数字
^\d{m,n}$
零或非零开头的数字
^(0|[1-9][0-9]*)$
有两位小数的正实数
^[0-9]+(.[0-9]{2})?$
有1-3位小数的正实数
^[0-9]+(.[0-9]{1,3})?$
整数
^-?\d+$
非零的正整数
^\+?[1-9][0-9]*$
非零的负整数
^\-[1-9][0-9]*$
非负整数(正整数 + 0)
^\-[1-9][0-9]*$
非正整数(负整数 + 0)
^((-\d+)|(0+))$
浮点数
^(-?\d+)(\.\d+)?
正浮点数
^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
负浮点数
^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
非正浮点数(负浮点数 + 0)
^((-\d+(\.\d+)?)|(0+(\.0+)?))$
非负浮点数(正浮点数 + 0)
^\d+(\.\d+)?$
长度为3的字符
^.{3}$
由26个英文字母组成的字符串
^[A-Za-z]+$
由26个大写英文字母组成的字符串
^[A-Z]+$
由26个小写英文字母组成的字符串
^[a-z]+$
由数字和26个英文字母组成的字符串
^[A-Za-z0-9]+$
由数字、26个英文字母或者下划线组成的字符串
^\w+$
密码验证,以字母开头,只能包含字符、数字和下划线,长度在6-18之间。
^[a-zA-Z]\w{5,17}$
特殊字符验证,是否含有 ^%&',;=?$" 等字符
[^%&',;=?$\x22]+
汉字验证
/^[\u4E00-\u9FA5]*$/
双字节字符(包括汉字中文标点符号在内)
/^[^\x00-\xff]*$/
空白行
\n\s*\r
首尾空白字符
^\s*|\s*$
Email地址
/^\w+@\w+\.\w+$/
URL地址
/[a-zA-z]+:\/\/[\S]*/
网络链接
(h|H)(r|R)(e|E)(f|F) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)?
图片链接
(s|S)(r|R)(c|C) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)?
ip地址
\d+\.\d+\.\d+\.\d+
手机号码
/^[1][0-9]{10}$/
电话号码
/^(\(\d{3,4}\)|\d{3,4}-)?\d{7,8}(-\d{3})*$/
身份证号(15位或18位)
/^(\d{15}|\d{17}([0-9xX]))$/
中国邮政编码(6位)
^[0-9]{6}$
HTML标记
< (\S*?)[^>]*>.*?|< .*? />
腾讯QQ号
[1-9][0-9]{4,}
一年的12个月
^(0?[1-9]|1[0-2])$
一个月的31天
^((0?[1-9])|((1|2)[0-9])|30|31)$
短日期格式:"YYYY-MM-dd"|| "YYYY/MM/dd"
^(\d{4})(-|\/)(\d{1,2})\2(\d{1,2})$
长日期格式:"YYYY-MM-dd HH:mm:ss"|| "YYYY/MM/dd HH:mm:ss"
^(\d{4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$
十六进制值
/^#?([a-f0-9]{6}|[a-f0-9]{3})$/
?
?
?
?
?
?
正则表达式对象的属性及方法
预定义的正则表达式拥有有以下静态属性:input, multiline, lastMatch, lastParen, leftContext, rightContext和$1到$9。其中input和multiline可以预设置。其他属性的值在执行过exec或test方法后被根据不同条件赋以不同的值。许多属性同时拥有长和短(perl风格)的两个名字,并且,这两个名字指向同一个值。(JavaScript模拟perl的正则表达式)
正则表达式对象的属性
属性
含义
$1...$9
如果它(们)存在,是匹配到的子串
$_
参见input
$*
参见multiline
$&
参见lastMatch
$+
参见lastParen
$`
参见leftContext
$''
参见rightContext
constructor
创建一个对象的一个特殊的函数原型
global
是否在整个串中匹配(bool型)
ignoreCase
匹配时是否忽略大小写(bool型)
input
被匹配的串
lastIndex
最后一次匹配的索引
lastParen
最后一个括号括起来的子串
leftContext
最近一次匹配以左的子串
multiline
是否进行多行匹配(bool型)
prototype
允许附加属性给对象
rightContext
最近一次匹配以右的子串
source
正则表达式模式
lastIndex
最后一次匹配的索引
正则表达式对象的方法
方法
含义
compile
正则表达式比较
exec
执行查找
test
进行匹配
toSource
返回特定对象的定义(literal representing),其值可用来创建一个新的对象。重载Object.toSource方法得到的。
toString
返回特定对象的串。重载Object.toString方法得到的。
valueOf
返回特定对象的原始值。重载Object.valueOf方法得到
例子
<script language = "JavaScript">
var myReg = /(w+)s(w+)/;
var str = "John Smith";
var newstr = str.replace(myReg, "$2, $1");
document.write(newstr);
</script>
将输出"Smith, John"