常用正则表达式/反向选择(取反)
正则快速入门网站 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