基础 - 不匹配指定的内容

  • 作者:KK

  • 发表日期:2017.7.9


要点速读

  1. [0-9]是用区间匹配数字嘛,但是不匹配(排除)数字就用[^0-9]

  2. 在区间里以^号开头就是排除这个区间的意思(反向逻辑)

  3. \D是等价于[^0-9](排除数字),也是\d的反义

  4. 同上,\W也是相反于\w

  5. 同上,\S也是相反于\s


JS代码

console.log(
	'12345678'.match(/[^5]+/g) // 1234 和 678
);

console.log(
	'52345_abc'.match(/[^0-9]+/), // _abc  排除了数字
	'52345_abc'.match(/\D+/) // _abc  与上面等价
);

console.log(
	'82abc'.match(/[^a-b]+/g) // 82 和 c
);

console.log(
	'hello!-?123'.match(/\W+/) // !-? 
);

PHP代码

header('Content-type:text/plain');

preg_match_all('#[^5]+#', '12345678', $matchResult1);
print_r($matchResult1); // 1234 和 678

preg_match('#[^0-9]+#', '52345_abc', $matchResult2);
print_r($matchResult2); // _abc  排除了数字

preg_match('#\D+#', '52345_abc', $matchResult3);
print_r($matchResult2); // _abc  与上面等价

preg_match_all('#[^a-b]+#', '82abc', $matchResult4);
print_r($matchResult4); // 82 和 c

preg_match('#\W+#', 'hello!-?123', $matchResult5);
print_r($matchResult5); // !-?