菜鸟求助解释一句正则表达式

菜鸟求助解释一句正则表达式

图片[1]-菜鸟求助解释一句正则表达式-学吧号

写正则表达式的人水平不高,简单的功能写出复杂杂的在复杂不过了的表达式以上正则和这个正则等效[\w/]*也就是var result=str.match(/[\w/]*/g);((\w+)\/)\1*\2* 解释 \w代表匹配一个任意数字字母和中文字符加下划线 +代表\w重复匹配一次以上 (\w+)加个括号,代表把匹配到的上面字符放在分组里,这里从左向右数为第二个分组 \2代表对前面匹配到的分组2的引用。也就是(\w+)分组匹配到的字符的引用,前面匹配到a,后面\2也就是a *代表重复引用零次以上。

零,可以没引用。

\1代表对前面最外层分组((\w+)\/)的引用。同理,*代表可以重复任意次。

用js的正则表达式检测电话号码,要求,必须是1开头,只能是数字,并且是11位数字,这儿正则表达式怎么写

图片[2]-菜鸟求助解释一句正则表达式-学吧号

手机号的正则表达式为“^1(3|4|5|7|8)\d{9}$”,解释如下
“^1”表示以1开头,“(3|4|5|7|8)”表示第二位可能是3/4/5/7/8等的任意一个,在加上后面的\d表示数字[0-9]的9位,总共加起来11位结束。
代码如下:
function checkPhone(){var phone = document.getElementById(‘phone’).value;if(!(/^1(3|4|5|7|8)\d{9}$/.test(phone))){alert(“手机号码有误,请重新输入”);return false;} }

js正则表达式常用元素符如下:

扩展资料:
正则表达式,又称规则表达式。

(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。

正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。

正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。

正则表达式r[0-9](3)能匹配出以下哪个字符串?

图片[3]-菜鸟求助解释一句正则表达式-学吧号

假定您写的这个正则表达式语法上正确,那么有一个小问题:()代表一个子表达式,()本身不匹配任何东西,也不限制匹配任何东西,只是把括号里的东西作为同一个表达式来处理,例如(ab){1,3}这个正则表达式,指的是ab一起连续出现最少1次、最多3次;如果去掉括号就是ab{1,3},指的是a后面紧跟的b出现最少1次,最多3次。
所以您给出的正则表示里的(3),完全可以去掉括号,那整个正则就简化成r[0-9]3了。

然后再分析语法:

r:匹配正常的英文字母r
[0-9]:匹配0到9之间、包含0和9的任意一个数字
3:匹配正常的数字3

于是,整个r[0-9]3的正则表达式能匹配的所有字符串就是:r03、r13、r23、r33、r43、r53、r63、r73、r83、r93。

更多关于正则表达式的入门知识,请参考《菜鸟教程的正则表达式》一章。

JavaScript正则表达式中 ?: 是什么意思?

图片[4]-菜鸟求助解释一句正则表达式-学吧号

“?:”是“非获取存储匹配”的意思
“ ?:” 只在一个“()”group中,紧贴着“(”出现,例如“(?:abcdefg)”,不同于“ ? ”, “?: ”不是一个量词,但是与“()”共同构造一个元字符,这个元字符所匹配出来的结果,不会保留,也不能参与诸如替换计算等等的操作。(这个操作在服务端多见一些,前端用的不多)(javascript只有string对象的replace方法能用到这个功能)
简单来说,就是你的正则表达式如果用不着在javascript里面使用replace方法,“?:”就可以省去(当然,看个人喜好和排版习惯,还有调试中的页面响应速度,如果加了“?:”反而更快,那就用吧)。

这么说起来还是比较抽象,用实例代码来说明吧。

<!DOCTYPE html><html><head><meta charset=”utf-8″><title></title></head><body>
<p>将匹配的数字增加后缀“9”</p >
<p class=”demo”>/(\d+)/gi:A23G4HFD567.</p > <p class=”demo”>/(?:\d+)/gi:A23G4HFD567.</p >
<button onclick=”myFunction()”>点我</button>
<script>
function myFunction(){
var e=document.getElementsByClassName(“demo”);
var str=e[0].innerHTML;
var n=str.replace(/(\d+)/gi,”$19″); e[0].innerHTML=n;
str=e[1].innerHTML;
var n=str.replace(/(?:\d+)/gi,”$19″); e[1].innerHTML=n;
}
</script></body></html>
<!—->
<!–在实例里面“$1代表第一个“()”所匹配的结果–>

点击“点我”按钮前

点击“点我”按钮后
可以看到“/(\d+)/gi”所匹配的结果被用于扩展替换字符串中的“$1”;
但是“/(?:\d+)/gi”所匹配的结果没有被用于扩展替换字符串中的“$1”,尽管,它也成功地找到了被查找字符串中的数字,显然结果没有被保留。
对了,类似的问题,可以用这种办法去对比验证。(比如“?=”、“?!”、“?<=”、“?<!”是什么意思……)

上图是在菜鸟教程找到的一个比较全面的正则表达式的元字符列表的部分:https://www.runoob.com/regexp/regexp-metachar.html
还有,不同软件的正则表达式的可能有不同的特性,但是目前perl的正则表达式是公认最多特性的。

THE END
喜欢就支持一下吧
点赞11
温馨提示:

1、本内容转载于网络,版权归原作者所有!
2、本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
3、本内容若侵犯到你的版权利益,请联系我QQ:243371741,会尽快给予删除处理!