体验
匹配Email地址的正则表达式:
\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
^1[3578]\d{9}$
匹配中国邮政编码:
[1-9]\d{5}(?!\d)
如何使用正则表达式
正则表达式是一种字符串模式语言,它作为其他语言的字符串出现.
\d匹配一个数字字符,\D匹配一个非数字字符,
\\在字符串中表示一个\.所以字符串\\d表示\d.\\D表示\D
创建正则表达式对象
必须创建正则表达式对象才能够使用正则表达式.创建正则表达式对象有两种方式.
1.直接创建对象
语法: varreg = new RegExp("pattern",["flags"])
Pattern 必选项。要使用的正则表达式模式。
语法 1,正则表达式模式写在/字符中间。例如: /\d/
语法2,用引号将正则表达式模式引起来的字符串,例如:字符串"\d"必须使用"\\d"才能够表示,要将\转义成普通的字符串. 例如”\\d”
flags 可选项。如果使用语法 2 要用引号将 flag 引起来。标志可以组合使用,可用的有:
g (全文查找出现的所有 pattern)
i(忽略大小写)
m (多行查找)
语法 1
new RegExp(/正则表达式/匹配标识);
这就是一个正则表达式,正则表达式必须在两个/之间,注意不用引号.匹配标识必须在后一个/之后.不需要出现在RegExp构造器的第二个参数中.
语法 2
new RegExp("pattern",["flags"]);
pattern必须使用""的字符串,该字符串的运行结果必须是一个正则表达式.例如:字符串"\d"必须使用"\\d"才能够表示,要将\转义成普通的字符串.
flags字符串使用字符串""
2.隐式创建对象.
语法: var正则表达式对象=/正则表达式模式/匹配标志;
验证regexp是否为正则表达式对象.
正则表达式对象中的方法
1.test(str) :匹配指定的正则表达式模式是否出现在字符串str中,如果存在则返回true,否则就返回false。
reg.test(str);
2.exec(str) :用正则表达式模式在字符串str中运行查找,并返回包含该查找结果的一个数组。没有找到就返回null
reg.exec(str);
返回的结果数组中包含三个元素: [第一次查找的结果,index:结果索引,input:查询的源字符串]
g表示从整个字符串中查找,但是每次执行exec方法只查找一下.
字符串对象中使用正则表达式的方法
1.stringObj.search(rgExp): 返回与正则表达式查找内容匹配的第一个子字符串的位置,没有匹配到则返回-1
2.stringObj.match(rgExp): 以数组形式返回符合匹配模式的字符串,没有匹配到则返回null
3.stringObj.replace(rgExp, replaceText): 使用指定的内容替换符合匹配模式的字符串
4.stringObj.split([separator[, limit]]): 使用匹配模式的字符串做为分隔符对字符串进行分割,返回数组.
方法用途
RegExp,test,exec,String,search,match,replace,split
不同的情况下使用不同的方法
如:
我想知道邮箱格式、手机格式、IP格式合不合法,用test
如果想抓取网页中所有的手机号,使用exec或match
想替换掉网页中敏感词汇,用replace
按照一定规范分割使用split
正则表达式语法细节
正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。正则表达式作为一个模板将某个字符模式与所搜索的字符串进行匹配。
普通字符
所有的大写和小写字母字符,所有数字,所有标点符号以及一些符号。
1.最简单的正则表达式是一个单独的普通字符,可以匹配所搜索字符串中的该字符本身。
2.可以将多个单字符组合在一起得到一个较大的表达式.
特殊字符
特殊字符是正则表达式语言中代表一定含义的字符.如果将这些特殊字符作为一个普通的字符必须使用转义符号\
单字符簇
通过[]定义单个字符,[]中的是该字符的可选字符.
[abc] a、b 或 c(简单类)
[ ^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)
[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集)
[a-z&&[def]] d、e 或 f(交集)
[a-z&&[ ^bc]] a 到 z,除了 b 和 c:[ad-z](减去)
[a-z&&[ ^m-p]] a 到 z,而非 m 到 p:[a-lq-z](减去)
预定义字符
. 任何字符(与行结束符可能匹配也可能不匹配)
\d 数字:[0-9]
\D 非数字: [ ^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[ ^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[ ^\w]
注意以上的预定义字符只代表一个字符.只是定义了该字符可以出现的范围.
例如:\d表示一个字符,但是该字符只能够是0-9之间的一个字符.
限定符
限定符可以限制正则表达式匹配上的内容必须要出现多少次才能满足匹配。
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
也可以使用以下方式表示:
* {0,}
\+ {1,}
? {0,1}
定位符
定位符可以将一个正则表达式固定在一行的开始或结束。也可以创建只在单词内或只在单词的开始或结尾处出现的正则表达式。
^ 匹配输入字符串的开始位置
$ 匹配输入字符串的结束位置
\b 匹配一个单词边界
\B 匹配非单词边界
转义字符
将具有一定含义的特殊字符转义成普通的字符. 也可以将普通的字符转义成特殊字符
需要的转义字符:
()[]{}\./*+? ^$
选择匹配符 |
| 可以匹配多个规则(或)
如同: select * from 表 where id = 1 or id =2
正向预查
查找在某些内容(但并不包括这些内容)之前的东西.
语法:B(?=A)
当前后面的内容符合A表达式,然后在查询出B表达式匹配上的内容.
负向预查
查找不在某些内容(但并不包括这些内容)之前的东西.
语法:B(?!A)
当前后面的内容不符合A表达式,然后在查询出B表达式匹配上的内容.
正则表达式的其他语法(重要)
1.子表达式
在正则匹配模式中,使用一对圆括号括起来的内容是一个子表式.
即: 在\(\d)\ig表达式中. \d就是一个子表达式
2.捕获
在正则匹配模式中,子表达式匹配到的内容会被系统捕获至系统的RegExp对象中.
RegExp.lastIndex保存最后次匹配成功的位置
RegExp.$n 保存第N个子表达式在匹配期间找到的、最近保存的部分.
微信扫描即可打赏
服务器好贵
网站需要运营
给点小费以表支持
评论已关闭