常用正则表达式/反向选择(取反)

正则快速入门网站 https://www.jb51.net/tools/zhengze.html
正则测试&理解网站:https://regexr.com
正则可视化网站:https://regex-vis.com

反选

不以数字 \d 开头的行,使用下面的正则表达式:

^(?!\d).*$

解释:

  • ^:匹配行的开头。
  • (?!\d):负向前瞻,表示"如果接下来的字符是数字,匹配失败"。因此如果一行的开头是数字,则这一行不会被匹配。
  • .*:匹配该行中的任何字符(零个或多个字符)。
  • $:表示行的结束。

示例:

输入 是否匹配
123abc 不匹配
abc123 匹配
!hello 匹配
9start 不匹配
#notnumber 匹配

#更多示例:

正则表达式 正则说明 文本内容 匹配结果
^((?!中国).)*$ 整行匹配不包含中国的行文本 在历史的长河中,
11 中国以其悠久的文明和灿烂的文化深深吸引着世界的目光。
从古代的丝绸之路到现代的 “一带一路” 倡议,
22 中国不断展现出其开放与包容的姿态,
推动着全球经济的合作与发展。
在历史的长河中,
从古代的丝绸之路到现代的 “一带一路” 倡议,
推动着全球经济的合作与发展。
^((?!中国).)* 匹配不包含中国的文本 > 从第一个中国之前的内容开始匹配 (适用换行) 在历史的长河中,中国以其悠久的文明和灿烂的文化深深吸引着世界的目光。从古代的丝绸之路到现代的 “一带一路” 倡议,中国不断展现出其开放与包容的姿态,推动着全球经济的合作与发展。 在历史的长河中,
.((?!中国).)*$ 匹配不包含中国的文本 > 从最后一个中国之后的内容开始匹配 (适用换行) 在历史的长河中,中国以其悠久的文明和灿烂的文化深深吸引着世界的目光。从古代的丝绸之路到现代的 “一带一路” 倡议,中国不断展现出其开放与包容的姿态,推动着全球经济的合作与发展。 中国不断展现出其开放与包容的姿态,推动着全球经济的合作与发展。
(\b(?!中国)\w+\b|[^中国\s]+) 可段落 (换行) 匹配中国以外的段落文本 在历史的长河中,
11 中国以其悠久的文明和灿烂的文化深深吸引着世界的目光。
从古代的丝绸之路到现代的 “一带一路” 倡议,
22 中国不断展现出其开放与包容的姿态,
推动着全球经济的合作与发展。
在历史的长河,
11 以其悠久的文明和灿烂的文化深深吸引着世界的目光。
从古代的丝绸之路到现代的 “一带一路” 倡议,
22 不断展现出其开放与包容的姿态,
推动着全球经济的合作与发展。
(\b(?!t_\w+)\w+\b|[^\w\s]+) 可段落 (换行) 匹配不满足 t_\w+ 内容的所有文本 t_t1,t_t2,s_t3,
p_p4,v_v5
t_t6
,,s_t3,
p_p4,v_v5

#常用的正则表达式

正则表达式 说明 评注
特殊字符类
^\s+|^\n+ 匹配以空格或换行开头的内容,替换去除空行 非常常用
^[\t]*\n 这个正则表达式代表所有的空行,指含有零个或零个以上空格或制表符、以换行符结尾、不含其它字符的行。
^[\t]+ 查找文本前的多个制表符 替换为空,可删除行首空白(包括全半角空格和制表符)。
[\t]+$ 查找以制表符结尾的制表符 替换为空,可删除行末空白(包括全半角空格和制表符)。
^[\t]+|[ \t]+$ 查找制表符开头或结尾的正则表达式 替换为空,可删除行首和行末所有空白(包括全半角空格和制表符)。
[\u4e00-\u9fa5] 匹配中文字符 匹配中文还真是个头疼的事,有了这个表达式就好办了
[^\x00-\xff] 匹配双字节字符 (包括汉字在内),可以用来计算字符串的长度(一个双字节字符长度计 2,ASCII 字符计 1)
\n\s*\r 匹配空白行,可以用来删除空白行
<(\S*?)[^>]*>.*?|< .*? \> 匹配 HTML 标记,网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力
^\s*|\s*$ 匹配首尾空白字符,可以用来删除行首行尾的空白字符 (包括空格、制表符、换页符等等),非常有用的表达式
\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 匹配 Email 地址,表单验证时很实用
[a-zA-z]+:\\[^\s]* 匹配 URL 网址 ,网上流传的版本功能很有限,这个基本可以满足需求
^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 匹配帐号是否合法 (字母开头,允许 5-16 字节,允许字母数字下划线),表单验证时很实用
数字类
\d{3}-\d{8}|\d{4}-\d{7} 匹配国内电话号码 匹配形式如 0511-4405222 或 021-87888822
[1-9][0-9]{4,} 匹配腾讯 QQ 号 腾讯 QQ 号从 10000 开始
[1-9]\d{5}(?!\d) 匹配中国邮政编码 中国邮政编码为 6 位数字
\d{15}|\d{18} 匹配身份证 中国的身份证为 15 位或 18 位
\d+\.\d+\.\d+\.\d+ 匹配 ip 地址 提取 ip 地址时有用
^[+-]?\d+(\.\d+)?$ 匹配特定数字 有理数或无理数
^[+=]?\d+(\.\d+)?[eE][-+]?\d+$ 科学计数法数 2.71828e0
^[1-9]\d*$ 匹配正整数
^-[1-9]\d*$ 匹配负整数
^-?[1-9]\d*$ 匹配整数
^[1-9]\d*|0$ 匹配非负整数(正整数 + 0
^-[1-9]\d*|0$ 匹配非正整数(负整数 + 0)
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 匹配正浮点数
^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 匹配负浮点数
^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$ 匹配浮点数
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$ 匹配非负浮点数(正浮点数 + 0)
^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$ 匹配非正浮点数(负浮点数 + 0) 处理大量数据时有用,具体应用时注意修正
字符串类
^[A-Za-z]+$ 匹配由 26 个英文字母组成的字符串,大写或小写
^[A-Z]+$ 匹配由 26 个英文字母的大写组成的字符串
^[a-z]+$ 匹配由 26 个英文字母的小写组成的字符串
^[A-Za-z0-9]+$ 匹配由数字和 26 个英文字母组成的字符串
^\w+$ 匹配由数字、26 个英文字母或者下划线组成的字符串 最基本也是最常用的一些表达式
^.*John.*$ 匹配包括 “John” 的整行。

参考文章:https://www.cnblogs.com/dongzhiquan/archive/2012/10/15/2725247.html

posted @ 2021-07-21 15:32  Journey&Flower  阅读(11376)  评论(0编辑  收藏  举报