JS正则表达式

这里五个汉字﹝2018﹞01234号varreg=/^[\u4E00-\u9FA5\uF900-\uFA2D]{2,4}[﹝﹞\d]{6}[0-9]{4}[\u4E00-... 这里五个汉字﹝2018﹞01234号
var reg=/^[\u4E00-\u9FA5\uF900-\uFA2D]{2,4}[﹝﹞\d]{6}[0-9]{4}[\u4E00-\u9FA5\uF900-\uFA2D]{1}$/;

求大神指教
展开
 我来答
百度网友d8f9ba5
2018-07-14 · TA获得超过209个赞
知道小有建树答主
回答量:103
采纳率:96%
帮助的人:40.5万
展开全部

首先,你没说你懂那些,全讲又太多,所以说那些一看上去就懵逼的地方,我将解析写在了最后。

因为你问到汉字,我猜你可能不了解 \u4E00-\u9FA5\uF900-\uFA2D 是怎么回事,前面的小 u 代表他们是 Unicode,而后面的区间其实是 Unicode 编码中各个汉字的编码范围,u4E00

Unicode 编码上规定了基础的汉字是从 u4E00 到 u9FA5,每一个编码代表一个字:

然后 \uF900 到 \uFA2D 同样是指汉字,不过是指那些生僻的字或者是形似的字,算是一种补充说明,不过明显这段代码不是最新的,因为 Unicode 编码是在不断的进步跟收集文字的,看下图可以知道这些补充文字已经超过了 FA2D 的极限,uF900

仔细看,这些字的写法其实都跟常规的不同,比如那个繁体的“鹤”字跟下面那个全等的“鹤”字其实写法是不一样的,其他的也是如此,也就是说 \uF900-\uFA2D 其实是指字的不同写法,也称兼容字

-----------------------------------------------------------------------------------------------

至于正则的话,用前面一段 /^[\u4E00-\u9FA5\uF900-\uFA2D]{2,4}/ 来解释就是:

  • ^ 表示匹配最开头的。

  • [1-9] 表示匹配 1 到 9 间的任意数字,所以 [\u4E00-\u9FA5] 就是指匹配区间内全部的汉字。

  • 放在后面的 {2,4} 作用于前面的 [...] 框,用来规定前面的匹配的数量 2<= 匹配数量<=4。

所以 /^[\u4E00-\u9FA5\uF900-\uFA2D]{2,4}/ 其实是说,匹配位于开头的满足[...]框内所有条件的字符(在这里其实就是汉字),因为后面跟着 {2,4} 则在开头的汉字数量我们会根据 2<=汉字数量 <=4 的条件进行匹配(注意五个汉字会匹配前面四个)

结果如下图:

最后注意下 {n,m} 跟 {n} 的效果是不一样的,{n,m} 是 n ~ m 都匹配,而且默认会匹配最大的的数量(贪婪),而 {n} 则是指前面的匹配正好发生了 n 次时才被匹配,那么在后面加上代表最后位置的 $ 符号时,/[...]{n}$ /其实就是指最后一个字符如果符合 [...] 发生 n 次的情况就匹配。

正则不难但是内容挺多的细节也不少,如果在加上 ig 之类的关键字,效果又是不同,到网上自己去搜索比较好。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式