正则验证技巧(包含生僻字)

1、居民身份证:"(^\\d{15}$)|(^\\d{18}$)|(^\\d{17}(\\d|X|x)$)"

2、港澳居民来往内地通行证(回乡证):"^[mMhH]\\d{10}|[mMhH]\\d{8}$"

3、台湾居民来往大陆通行证(台胞证):"(^\\d{8}$)|(^[a-zA-Z0-9]{10}$)|(^\\d{18}$)"

4、护照:"^1[45][0-9]{7}|([P|p|S|s]\\d{7})|([S|s|G|g]\\d{8})|([Gg|Tt|Ss|Ll|Qq|Dd|Aa|Ff]\\d{8})|([H|h|M|m]\\d{8,10})$"

5、军官证:"^[\u4E00-\u9FA5]{1,}(字第)([0-9a-zA-Z]{4,8})(号?)$"

6、户口本:"(^\\d{15}$)|(^\\d{18}$)|(^\\d{17}(\\d|X|x)$)"

 
 

1、以“河南”开头

/^河南.*/

2、以“(河南)”开头

/^[\(\(]河南[\)\)].*/

3、不以“河南”开头

/^(?!河南).*/

4、不以“(河南)”开头

/^(?![\(\(]河南[\)\)]).*/

   注:^是字符串开头,(?!   )  是否定环视,意思是后面不是……

  注:这里前后加的 “/” 是在查询mongodb数据库的时候使用的,在 .NET 中对已获取的数据进行匹配时,需要把前后的 “/” 去掉!!!

 

一、不以某个字符串开头
这个问题我们可以用 “否定式向前匹配”来实现,语法 (?!str),表示后面不是接str才匹配前面的字符串。如we(?!123)会匹配welcome中的we,但不匹配we123中的we。所以(?!str)的前面不要有字符串就表示不以str开头了。

因此我们若想要匹配由26个小写字母组成,但不以ab字符串为开头的字符串,可以这样写^(?!ab)[a-z]+$

二、不以某个字符串结尾
这个问题我们可以用“否定式向后匹配”来实现,语法(?<!str),表示前面不是str字符串的话,就匹配字符串。如(?<!123)we会匹配23we中的we,但不匹配123we中的we。所以

(?<!str)的后面不要有字符串就表示不以str结尾了。因此,如果我们想匹配由26个小写字母组成,但不以bc结尾的字符串,就可以这样写^[a-z]+(?<!bc)$

 

1.常见的中文 \u4e00-\u9fbb 和 \u4e00-\u9fa5 (不包含生僻字)

2.比较广泛的中文汉字。(包含了咱们需要的生僻字 和 不需要的很多字符 比如 中文句号分号逗号、书名号 等等) \u2E80-\uFE4F

3.CJK标点符号 
范围:\u3000-\u303F 
参考地址:http://www.unicode.org/charts/PDF/U3000.pdf

根据以上三点,我们要用第二个再排除第三个,所以判断是否包含生僻字的中文姓名的正则表达式如下所示:

你试试这个:/(^[\u2E80-\uFE4F]{2,32}$)|(^[a-zA-Z]{2,32}$)/

 

/^((?![\u3000-\u303F])[\u2E80-\uFE4F]|\·)*(?![\u3000-\u303F])[\u2E80-\uFE4F](\·)*$/.test(name)

posted on 2019-07-04 21:46  大西瓜3721  阅读(1359)  评论(0编辑  收藏  举报

导航