正则表达式中符号的含义及⽤法
正则表达式也就是所说的规则表达式(RegularExpression)正则表达式通常被⽤来检索、替换那些符合某个模式(规则)的⽂本.
⼀、解释正则表达式中的g、i、m
g:表⽰全局(global)模式,也就是说应⽤于是所有的字符串。并不是说检索到第⼀个符合的匹配项就结束了
i:表⽰字符不区分⼤⼩写(ca-innsitive),就是检索时字符时不考虑字符的⼤⼩写
m:表⽰多⾏(multiline),就是说到达⼀⾏的末尾还会继续下⼀⾏检索有没有符合规则的匹配项
⼆、正则表达式中的字符含义:
f表⽰换页符相当于x0c和cL
n换⾏符,相当于x0c和cL
r回车符,相当于x0d和cM
s匹配任意空⽩字符,包含空格符、制表符、换页符等,相当于[fnvt]
S匹配任意的⾮空⽩字符,相当于[^fnvt]
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)12/中的‘(foo)’和
‘(bar)’匹配并记住字符串“foobarfoobar”中前两个单词。模式中的1和2匹配字符串的后两个单词。注意1、2、n
是⽤在正则表达式的匹配环节。在正则表达式的替换环节,则要使⽤像$1、n这样的语法,例如,‘barfoo’.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,否则就返回fla
publicstaticvoidtel(){
StringIphone="⼿机号:1735388863";
Stringregex="[1][3578]d{9}";
n(s(regex));
也可以将检索符合的内容输出
vartel="iphone:";
varregex=/b[a-z]{5}w:[1][3578]d{9}/
((regex)+"
");
匹配url地址或者端⼝路径什么:
varstr="";
varpatt1=/(w+):([^/:]+)(:d*)?([^#]*)/;
arr=(patt1);
(arr);
匹配邮箱:
varstr="1589088794@";
varpatt1=/^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$/;
((patt1));
只要理解知道这些正则表达式的字符表⽰的什么,规则就可以拼写出来,⾃⼰去写规则吧
本文发布于:2022-11-24 08:12:17,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/10510.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |