首页技术js正则表达式特殊字符 js正则表达式实例

js正则表达式特殊字符 js正则表达式实例

编程之家2026-06-23640次浏览

大家好,今天来为大家解答js正则表达式特殊字符这个问题的一些问题点,包括js正则表达式实例也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~

js正则表达式特殊字符 js正则表达式实例

JS正则表达式中有哪些特殊字符,这些特殊字

这些符号有:^$.*+-?=!:|\/() [ ]{}

1.“[ ]”表示字符类:即括号里是个字符集:如/[abc]/,表示和含有a,b,c任何一个字母的字符串都匹配。

注:特殊字符类:

\s表示空格符、制表符、Unicode空白符。\S表示非空格空白符。(也可自定义Unicode字符类:

如:/[\u4E00-\u9FA5]/表示只匹配中文字符。)

\w任何单字字符,相当于[a-zA-X0-9_];\W与\w相反。

js正则表达式特殊字符 js正则表达式实例

\d任何数字,相当于[0-9];\D与\d相反。

\b在字符类中使用表示退格符,[\b]则表示退格直接量;\b可以用来指定匹配位置,即匹配到达单词边界,称为锚;

如:查找一个句子里的单词 java,可以使用/\bjava\b/;\B与\b相反。

2.“-"表示连字符,如[a-z];

3."."表示除换行符;表示匹配除“\r\n”之外的任意单个字符。若要匹配包括“\r\n”在内的任何字符,请使用像“[\w\W|\d\D|\s\S|]”的模式。

4."^"具有两重含义:开始标记和非,如:/^a/表示以a开始的字符;当在[]中时:/[^a]/表示非a的所有字符。

js正则表达式特殊字符 js正则表达式实例

5."$"表示字符结尾。如:/^abc$/表示以c结束的字符。

6.”{}"表示重复上一项。如/\d{2,4}/表示数字出现至少2次,最多4次。如/3{2,4}/匹配33...;333....;3333.....;不匹配3和4个3相连以上的了。它的三种格式如下{n,m}表示至少3次,最多m次;{n,}至少n次;{n}恰好n次。

7."?"表示{0,1}。

8."+"表示{1,}。

9."*"表示{0,}。

注:非贪婪的重复(如??,+?,*?,{1,5}?只匹配第一个。)

10."|"表示分割,即或的含义。如:/ab|cd|ef/匹配含有ab或cd或ef的字符串。

11."()"包含三重用途:一是定义子表达式。二是在完整的模式中定义子模式。三是子表达式的引用。

子模式的定义可以从目标串中抽取和括号中的子模式相匹配的部分。

子模式的表达式的引用是指:可识别子模式的编号,提取它。如/(abc)\sis\s(string\w*)/;里面含有两个字表达式:可通过

\1指(abc);\2指(string\w*);应用如:/['"][^'"]*['"]/不能取前后同样的引号,可以这样写:/[('")[^'"]*\1]/,可起到约束作用。

注:若想()里的不想被记忆,可采用(?:.....),将不会对其编号。

还有(?=p),(?!p)如下:

如/(javascript)?(?=\:)/表示匹配javascript:,但不包含:;它不匹配javascript,因为他有个条件就是后要接:;

(?!p)反前向声明,要求接下来的字符不与模式p匹配,与(?=p)相反。

js验证密码的正则表达式

完整的js正则表达式:

//强:字母+数字+特殊字符

^(?![a-zA-z]+$)(?!\d+$)(?![!@#$%^&*]+$)(?![a-zA-z\d]+$)(?![a-zA-z!@#$%^&*]+$)(?![\d!@#$%^&*]+$)[a-zA-Z\d!@#$%^&*]+$//中:字母+数字,字母+特殊字符,数字+特殊字符

^(?![a-zA-z]+$)(?!\d+$)(?![!@#$%^&*]+$)[a-zA-Z\d!@#$%^&*]+$

//弱:纯数字,纯字母,纯特殊字符^(?:\d+|[a-zA-Z]+|[!@#$%^&*]+)$

//校验是否全由数字组成function isDigit(s){var patrn=/^[0-9]{1,20}$/;if(!patrn.exec(s)) return falsereturn true

}//校验登录名:只能输入5-20个以字母开头、可带数字、“_”、“.”的字串function isRegisterUserName(s){var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/;if(!patrn.exec(s)) return falsereturn true}function isRegisterUserName(s){var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/;if(!patrn.exec(s)) return falsereturn true}

//校验用户姓名:只能输入1-30个以字母开头的字串Javascript代码function isTrueName(s){var patrn=/^[a-zA-Z]{1,30}$/;if(!patrn.exec(s)) return falsereturn true}}}//校验密码:只能输入6-20个字母、数字、下划线

function isPasswd(s){var patrn=/^(\w){6,20}$/;if(!patrn.exec(s)) return falsereturn true}//校验普通电话、传真号码:可以“+”开头,除数字外,可含有“-”

function isTel(s){//var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?(\d){1,12})+$/;var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;if(!patrn.exec(s)) return falsereturn true}//校验手机号码:必须以数字开头,除数字外,可含有“-”

function isMobil(s){var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;if(!patrn.exec(s)) return falsereturn true}//校验邮政编码

function isPostalCode(s){//var patrn=/^[a-zA-Z0-9]{3,12}$/;var patrn=/^[a-zA-Z0-9 ]{3,12}$/;if(!patrn.exec(s)) return falsereturn true}//校验搜索关键字

function isSearch(s){var patrn=/^[^`~!@#$%^&*()+=|\\\][\]\{\}:;'\,.<>/?]{1}[^`~!@$%^&()+=|\\\][\]\{\}:;'\,.<>?]{0,19}$/;if(!patrn.exec(s)) return falsereturn true}function isIP(s)//by zergling{var patrn=/^[0-9.]{1,20}$/;if(!patrn.exec(s)) return falsereturn true}

js中的正则表达式(2)

紧接着上次的 js中的正则表达式(1),这一文搁在那很久了的,本文为初学者学习笔记心得,适用我这种小白,并不是什么高大尚的内容,您将在本文中看到,如何实现重复字符匹配,子表达式的使用,嵌套以及replace()方法中圆括号内第二个特殊参数的使用,欢迎路过的老师多提意见和指正

可以戳后链接 js中的正则表达式(2)

示例1:

示例2:

示例3:

示例1:

+与*的区别:

+:匹配的是一个或者多个字符(或字符集合),也就是最少要匹配一次,至少有一个或者多个匹配,而*:匹配零个或者任意多个字符(或者字符集合),可以没有匹配

比如下面的两个实例应用区别:电子邮件的匹配规则

示例2:

示例3:

示例1:

小结:问题:

示例1:匹配重复多个字符/x{n}/

示例2:为重复匹配次数设定一个区间/x{m,n}/匹配x字符最少m次,最多n次

示例3:重复匹配0次到n次/x{0,n}/,匹配字符x,0次..n次

示例4:匹配至少重复多少次:给出一个最小的重复次数,不必给出一个最大值/{n,}/至少重复n次,或者必须重复n次或者更多次

贪婪型元字符:*,+,{n,}

懒惰型元字符:*?,+?,{n,}?

概念:对表达式进行分组和归类,也是更大的表达式的一部分,把一个表达式划分为一系列子表达式的目的是为了把那些子表达式当做一个独立元素来使用

方式:子表达式必须用(和)括起来,注意,(左括号和右括号)是元字符,如果想要匹配本身,注意转义(和)

示例1:

子表达式是允许多层嵌套的,没有限制,但是要适可而止,多重的嵌套子表达式可以构造出强大的正则表达式,但是由于层层嵌套,会让正则表达式难以阅读和理解,但硬骨头始终是要啃的,如果进行表达式的拆分,每次只分析和理解一个子表达式,按照先内后外的原则来进行拆分,而不是从第一个字符开始一个字符一个字符的去尝试,也许就会好很多

示例1:匹配一个合法的IP地止

这个模式相当的长而且看着非常繁琐而复杂,是由众多个子表单时嵌套构成,4个子表达式

((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5])),从左边到右边,(\d{1,2})表示匹配任意一个1位或者两位数字(0-99),(1\d{2})表示的是一个以1开头的任意三位数(也就是100-199),(2[0-4]\d)表示匹配整数200-249,(25[0-5])表示的是匹配整数250-255,上面的长表达式通过|操作符结合成为一个更大的子表达式,其中含义是只需匹配4个子表达式中的任意一个就可以,而后面的 \.用来匹配元字符.本身,而后面的{3}表示需要重复3次,直到最后,数值范围又重复了一次,此次过程省略了 \.用来匹配IP地止里的最后一组数字,通过把4组数字的取值范围限制在0~255之间,这个模式就做到了只匹配合法的IP地止,不匹配非法的Ip地止

小结:

子表达式非常强大,也非常灵活,它是把同一个表达式的各个相关的部分组合在一起从而构成强大的匹配模式,子表达式必须用(右括号和左括号)来定义,并且子表达式可以多层嵌套使用

用途:对重复次数元字符的作用对象做出精准的设定和控制,对|操作符的OR条件做出准确的定义等

对于replace(正则规则,要替换的文本或者功能函数)方法中的第二个参数可以用函数的方式传入,而不只是一个字符串值,在这种情况下,原始字符串中每出现一项匹配的子字符串,都会执行一次该函数,并传入所匹配的子字符串,会使用函数的返回值来替换原子字符:

例如

总结:

整篇文章主要是对上节的一个补充,正则的内容太长了,容易令人看到想吐,主要谈到利用 x+进行重复匹配,也就是元字符加(+)的使用,以及用*匹配零个或多个字符,?:匹配零个或一个字符,只能匹配一个字符,对他们三者做了一个简单的比较,子表达式的使用,嵌套,replace()方法中第二个参数特殊字符的使用,以及作为函数时使用,而在平时当中,第二个参数作为函数处理是很常见的,当然正则是非常强大,远不止这点皮毛,反正我个人觉得,还是挺复杂的,往往通过正则写起来复杂的,用面向过程写法,逻辑更为复杂的,工具用好了,就是神器

关于本次js正则表达式特殊字符和js正则表达式实例的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。

ai制作动画视频代码?怎么在AI里做动画视频ai图片软件 AI格式图片用什么软件可以打开