正则表达式常学常忘,记规则不如记例子,记多不如记精,记例子就记最经典的。下面是本人珍藏的十个有用的正则表达式,不吝分享,以飨读者。
下面以javascript语言为例,展示正则表达式的经典例子,基本覆盖了基本用法。
经常遇到别人给的文本文件,里面出现多个空行,一般IDE格式化也无能为力,怎么办?正则表达式可以派上用场。
let lines = `
djaidjsia
lllds
daskldas
dasdlas
dasklda
kaskldsad
`
// str = lines.replace(/^(\s*\n){2,}/, "\n")
str = lines.replace(/^\s*[\r\n]|^\s+| +(?= )| +$|\s+$(?![^])/gm, '\n');
console.log(str)
在IntelliJ idea里可以运用上述表达式做全局替换。
长度8到18位,至少1个字母,1个数字和1个特殊字符
/^(?=.\d)(?=.[a-z])(?=.[A-Z])(?=.[!@#KaTeX parse error: Expected group after '^' at position 1: ^̲&*()_-]).{8,18}/
十八位的公民身份号码,排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。
var pattern = /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
console.log(p.test("11010519501130002X"));
(?i)<a([^>]+)>(.+?)</a>
说明:
?i表示大小写敏感,[^>]+表示匹配任何字符串,但不包含>
<("[^"]*"|'[^']*'|[^'">])*>
< #start with opening tag "<"
( # start of group #1
"[^"]*" # only two double quotes are allow - "string"
| # ..or
'[^']*' # only two single quotes are allow - 'string'
| # ..or
[^'">] # cant contains one single quotes, double quotes and ">"
) # end of group #1
* # 0 or more
> #end with closing tag ">"
>
^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.
([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])$
\b[\w.!#$%&’*+\/=?^`{|}~-]+@[\w-]+(?:\.[\w-]+)*\b
不包含hello:
var pattern = /^((?!hello).)*$/
console.log(pattern.test('abhellocba'))
console.log(pattern.test('abhellcba'))
不包含hello,也不包含world:
pattern = /^((?!hello)(?!world).)*$/
console.log(pattern.test('abhellocba'))
console.log(pattern.test('abhellcba'))
指定中文的unicode编码区间来匹配中文:
^[\\u4e00-\\u9fa5]{0,}$
检查CJK字符,采用:
([\u4e00-\u9fff]+|[\uff00-\uffef]+)
同理,还可以指定字符的unicode编码来匹配货币代码:
(?=.*\d+)(?=.*[\u00A5\uFFE5\uFFE1\u5713\uFF04\u20A4\u0024\u5186]+)
/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i
太史公曰:正则表达式是程序员手中的利剑,能解决许多人生中不大不小的烦恼。不会正则表达式不足语编程。有这十个正则表达式防身,没人再敢欺负你。