这几天经常遇到正则表达式的使用,来巩固一下!
##常遇到的符号
符号 | 含义 |
---|---|
// | 正则表达式都写在“//”内。 |
^ | 每一个正则表达式都以“^”开头 |
$ | 每一个正则表达式都以“$”结尾 |
* | 匹配0次或多次 /^123*$/ 匹配123,1233,12333 |
+ | 匹配1次或多次 /^123+$/ 匹配1233,12333,123333 |
? | 匹配0次或1次 eg: /^123?$/ 匹配123,1233 |
x|y | 匹配x或y eg:/^z |
{n} | 精确匹配n次 |
{n,m} | 最少匹配n次,最多匹配m次,n<=m |
{n,} | 最少匹配n次以上,最多不限制 |
[xyz] | 这是一个字符集,匹配这个集合中的任一一个字符 |
[^xyz] | 不匹配这个字符集中的任意一个字符,“[^xyz]”可以匹配“zoxoym”中的“oom” |
[a-z] | 匹配“a”到“z”范围内的任意小写字母字符 |
\b | 匹配单词边上的字符,eg.“er\b”可以匹配“never”中的“er”,但不能匹配“verb”中的“er”。 |
\B | 匹配单词内部字符,eg.“er\b”可以匹配“verb”中的“er”,但不能匹配“never”中的“er”。 |
\d | 匹配一个字数字符,/d/ = /[0-9]/ |
\D | 匹配一个非字数字符,/D/ = /[^0-9]/ |
\n | 匹配一个换行符 |
\r | 匹配一个回车符 |
\s | 匹配一个空白字符,包括n,r,f,t,v等 |
\S | 匹配一个非空白字符,等于/[^nfrtv]/ |
\t | 匹配一个制表符 |
\v | 匹配一个重直制表符 |
\w | 匹配一个可以组成单词的字符(alphanumeric,这是我的意译,含数字),包括下划线,如[w]匹配”$5.98″中的5,等于[a-zA-Z0-9_] |
\W | 匹配一个不可以组成单词的字符,如[W]匹配” 5.98 ″中的 5.98″中的 5.98″中的,等于[^a-zA-Z0-9] |
( ) | 将"("和 “)” 之间的表达式定义为“组”(group),并且将匹配这个表达式的字符保存到一个临时区域(一个正则表达式中最多可以保存9个) |
| | 将两个匹配条件进行逻辑“或”(Or)运算。如:/(\d)$|(a-z)$/ 表示匹配数字或者小写字母。注意:这个元字符不是所有的软件都支持的。 |
##方法 | |
方法 | 用法 |
----- | ------ |
search() | ‘zoom999’.search(/^zoo$/);//此列返回的值为0 |
match() | match() 在字符串中搜索复合规则的内容,搜索成功就返回内容,格式为数组,失败就返回null。用法: 字符串.match(正则) |
exec() | /0101/g.exec(‘0101后花园’); //返回值为匹配到的字符串数组 |
test() | 在字符串中查找符合正则的内容,若查找到返回true,反之返回false。 用法:正则.test(字符串) |
replace() | 查找符合正则的字符串,就替换成对应的字符串。返回替换后的内容。用法: 字符串.replace(正则,新的字符串/回调函数)(在回调函数中,第一个参数指的是每次匹配成功的字符) |
##举例
邮箱验证:
boolean temp = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/.test("email");
手机号验证:
boolean temp = /^1[3|4|5|8][0-9]\\d{8}$/.test("phoneNumber");