正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式
定义正则表达式
1 | var patt=new RegExp(pattern,modifiers); |
或者更简单的方式:
1 | var patt=/pattern/modifiers; |
- pattern(模式) 描述了表达式的模式
- modifiers(修饰符) 用于指定全局匹配、区分大小写的匹配和多行匹配
1.使用构造函数1
var reg=new RegExp("[1-9]\d*$")
2.使用 //1
var reg=/[1-9]\d*$/
修饰符
- i 忽略大小写
- g 全局匹配
- m 执行对行匹配
方括号
方括号用于查找某个范围内的字符:
- [abc] 查找方括号间的任何字符
- [^abc] 查找任何不在方括号中的字符
元字符
- \d 匹配数字
- \w 查找单词 (包括字符和数字)
- \s 查找空白字符
- \S查找非空白字符
匹配规则
- ==^== 匹配一个输入或一行的开头,/^a/匹配”an A”,而不匹配”An a”
- ==$== 匹配一个输入或一行的结尾,/a$/匹配”An a”,而不匹配”an A”
- ==*== 匹配前面元字符0次或多次,/ba*/将匹配b,ba,baa,baaa
- +匹配前面元字符1次或多次,/ba*/将匹配ba,baa,baaa
- ==?== 匹配前面元字符0次或1次,/ba*/将匹配b,ba
- ==(x)== 匹配x保存x在名为$1…$9的变量中
- ==x|y== 匹配x或y
- =={n}== 精确匹配n次
- =={n,}== 匹配n次以上
- =={n,m}== 匹配n-m次
- ==[xyz]== 字符集(character set),匹配这个集合中的任一一个字符(或元字符)
- ==[^xyz]== 不匹配这个集合中的任何一个字符
- ==[\b]== 匹配一个退格符
- ==\d== 匹配一个字数字符,/\d/ = /[0-9]/
- ==\D== 匹配一个非字数字符,/\D/ = /[^0-9]/
- ==\n== 匹配一个换行符
- ==\r== 匹配一个回车符
- ==\s== 匹配一个空白字符,包括\n,\r,\f,\t,\v等
- ==\S== 匹配一个非空白字符,等于/[^\n\f\r\t\v]/
- ==\w== 匹配一个可以组成单词的字符(alphanumeric,这是我的意译,含数字),包括下划线,如[\w]匹配”$5.98”中的5,等于[a-zA-Z0-9]
- ==\W== 匹配一个不可以组成单词的字符,如[\W]匹配”$5.98”中的$,等于[^a-zA-Z0-9]。
实例
1校验登录名:++只能输入5-20个以字母开头、可带数字、“_”、“.”的字串 ++1
2
3
4
5
6function isRegisterUserName(s)
{
var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/;
if (!patrn.exec(s)) return false
return true
}
2.校验密码:只能输入6-20个字母、数字、下划线1
2
3
4
5
6function isPasswd(s)
{
var patrn=/^(\w){6,20}$/;
if (!patrn.exec(s)) return false
return true
}
3.Email地址的正则表达式:1
\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
4.配网址URL的正则表达式:1
http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
5.过滤指定的字符
1 | re=/笨蛋|脑残|找家男|/g |
6.去除两端的空格1
2
3
4String.prototype.trim = function()
{
return this.replace(/(^\s*)|(\s*$)/g, "");
}
未完待续