正则表达式中符号的含义及⽤法
正则表达式也就是所说的规则表达式(Regular Expression)正则表达式通常被⽤来检索、替换那些符合某个模式(规则)的⽂本.
⼀、解释正则表达式中的 g 、i、m
g : 表⽰全局(global)模式,也就是说应⽤于是所有的字符串。并不是说检索到第⼀个符合的匹配项就结束了
i :表⽰字符不区分⼤⼩写(case-insensitive),就是检索时字符时不考虑字符的⼤⼩写
m :表⽰多⾏(multiline),就是说到达⼀⾏的末尾还会继续下⼀⾏检索有没有符合规则的匹配项
⼆、正则表达式中的字符含义:
\f表⽰换页符相当于 \x0c 和 \cL
\n换⾏符,相当于\x0c和\cL
\r回车符,相当于 \x0d 和 \cM
\s匹配任意空⽩字符,包含空格符、制表符、换页符等,相当于 [\f\n\v\t]
\S匹配任意的⾮空⽩字符,相当于[^ \f\n\v\t]
\t表⽰制表符,相当于\x09 和 \cI
\v表⽰垂直制表符等价于\x09、cl
\b边界符,匹配单词边界
\B⾮单词边界的匹配
\w匹配字母、数字、下划线。等价于’[A-Za-z0-9_]’
\W匹配⾮字母、数字、下划线。等价于’[A-Za-z0-9_]’
\0匹配 NULL(U+0000)字符, 不要在这后⾯跟其它⼩数,因为 \0 是⼀个⼋进制转义序列
$匹配字符串的结尾位置,设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 ‘\n’ 或 ‘\r’。匹配 $ 字符本⾝,请使⽤ 转义符即可 \$ ()标记⼦表达式的开始和结束位置⼦表达式可以获取以便以后使⽤
*表⽰匹配前⾯的⼦表达式零次或者多次,匹配* 使⽤转义字符 \*
+表⽰匹配前⾯的⼦表达式⼀次或者多次,匹配+使⽤转义字符 \+
.表⽰匹配除了换⾏符\n之外的 所有单字符 ,匹配.使⽤转义字符 \.
表⽰匹配前⾯的⼦表达式零次或⼀次,或指明⼀个⾮贪婪限定符。要匹配 ? 字符,请使⽤ \?
[标记⼀个中括号的表达式开始,匹配[使⽤转义字符 \[
\转义字符,将下⼀个字符标记为或特殊字符、或原义字符、或向后引⽤、或⼋进制转义符。例如, ‘n’ 匹配字符 ‘n’。’\n’ 匹配换⾏符。
序列 ‘\’ 匹配 “”,⽽ ‘(’ 则匹配 “(”。
^表⽰字符串的开始位置,在使⽤中 []代表的是⼀个字符集,^只有在字符集中才是反向字符集的意思,表⽰否定。其余的⼀般都表⽰限定开头,
要匹配^字符 使⽤转义字符 \^
{标记限定符表达式的开始,要匹配{字符 使⽤转义字符 \{
|指明两项之间的⼀个选择,相当于逻辑表达式中或者,要匹配|字符 使⽤转义字符 \|
-连字符 ,连字符包含开始值和结束值 在中括号[]中显⽰- 需要转义符帮忙\-
{n}n 是⼀个⾮负整数。匹配确定的 n 次。例如,‘o{2}’ 不能匹配 “Bob” 中的 ‘o’,但是能匹配 “food” 中的两个 o。
{n,}n 是⼀个⾮负整数。⾄少匹配n 次。例如,‘o{2,}’ 不能匹配 “Bob” 中的 ‘o’,但能匹配 “foooood” 中的所有 o。‘o{1,}’ 等价于
‘o+’。‘o{0,}’ 则等价于 ‘o*’。
{n,m}
m 和 n 均为⾮负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,“o{1,3}” 将匹配 “fooooood” 中的前三个 o。‘o{0,1}’ 等
{n,m}
价于 ‘o?’。请注意在逗号和两个数之间不能有空格。
x|y匹配X或者Y
[abc]字符集合,匹配所包含的任意⼀个字符,例如{abc}中可以匹配"about"中的"a"和"b"
[^abc]负值字符集合。匹配未包含的任意字符。也就是说⽩表⽰否定
[a-z]字符范围。匹配指定范围内的任意字符。例如,’[a-z]’ 可以匹配 ‘a’ 到 ‘z’ 范围内的任意⼩写字母字符。[^a-z]字符范围。⾮指定范围内的任意字符。例如,’[^a-z]’ 表⽰不是⼩写字符即可
\f表⽰换页符相当于 \x0c 和 \cL
(x)
匹配 ‘x’ 并且记住匹配项,就像下⾯的例⼦展⽰的那样。括号被称为 捕获括号。模式/(foo) (bar) \1 \2/中的 ‘(foo)’ 和
正则表达式获取括号内容‘(bar)’ 匹配并记住字符串 “foo bar foo bar” 中前两个单词。模式中的 \1 和 \2 匹配字符串的后两个单词。注意 \1、\2、\n 是⽤在正则表达式的匹配环节。在正则表达式的替换环节,则要使⽤像 $1、n 这样的语法,例如,‘bar foo’.replace( /(…)
(…)/, ‘$2 $1’ )。
(?:x)
匹配 ‘x’ 但是不记住匹配项。这种叫作⾮捕获括号,使得你能够定义为与正则表达式运算符⼀起使⽤的⼦表达式。来看⽰例表达式 /(?:foo) {1,2}/。如果表达式是 /foo{1,2}/,{1,2}将只对 ‘foo’ 的最后⼀个字符 ’o‘ ⽣效。如果使⽤⾮捕获括号,则{1,2}会匹配整个 ‘foo’ 单词。
x(? =y)匹配’x’仅仅当’x’后⾯跟着’y’.这种叫做先⾏断⾔。例如,/Jack(?=Sprat)/会匹配到’Jack’仅仅当它后⾯跟着’Sprat’。/Jack(?
=Sprat
(?
<=y)x
匹配’x’仅仅当’x’前⾯是’y’.这种叫做后⾏断⾔。例如,/(?<=Jack)Sprat/会匹配到’ Sprat ‘仅仅当它前⾯是’ Jack '。/(?<=Jack
x(?!y)仅仅当’x’后⾯不跟着’y’时匹配’x’,这被称为正向否定查。例如,仅仅当这个数字后⾯没有跟⼩数点的时候,/\d+(?!.)/ 匹配⼀个数字。
正则表达式/\d+(?!.)/.exec(“3.141”)匹配‘141’⽽不是‘3.141’
还有⼀些直接写了
\xn :匹配 n,其中 n 为⼗六进制转义值。⼗六进制转义值必须为确定的两个数字长。例如,'\x41' 匹配 "A"。'\x041' 则等价于 '\x04' & "1"。正则表达式中可以使⽤ ASCII 编码。
\num:匹配 num,其中 num 是⼀个正整数。对所获取的匹配的引⽤。例如,'(.)\1' 匹配两个连续的相同字符。
三、运算符运⾏的顺序
2、
1、等级⾃上⽽下,同级从左到右,下图表⽰:
例如:⼿机号格式验证
//表⽰⼿机号格式,符合就会返回true,否则就返回flase public static void tel(){
String Iphone ="⼿机号:1735388863";
String regex ="[1][3578]\\d{9}";
System.out.println(Iphone.matches(regex));
也可以将检索符合的内容输出
var tel = "iphone:173********";
var regex = /\b[a-z]{5}\w\:[1][3578]\d{9}/
document.write(tel.match(regex)+"<br/>");
匹配url地址或者端⼝路径什么:
<script>
var str = "www.baidu";
var patt1 = /(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/;
arr = str.match(patt1);
document.write(arr);
</script
匹配邮箱:
<script>
var str = "1589088794@qq";
var patt1 = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
document.write(str.match(patt1));
</script
只要理解知道这些正则表达式的字符表⽰的什么,规则就可以拼写出来,⾃⼰去写规则吧
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论