基础 - 匹配指定范围 ¶
作者:KK
发表日期:2017.6.10
要点速读 ¶
文章标题是为了通俗易懂才叫范围,其实在正则里的概念叫区间,我们叫区间匹配
[2-5]
可以匹配1到5的数字,但不匹配1、6到9,而[0-9]
表示所有数字区间其实就是用方括号
[ ]
然后在里面用起止的形式描述一个内容区间[a-d]
表示匹配a、b、c、d四个字母,但通常我们要匹配全部字母,所以直接[a-z]
[a-zA-Z]
才能匹配所有大小字母,上面只能匹配小写字母而已,当然只要匹配大写的话只用[A-Z]
也可以[0-9a-zA-Z]
这样一共指定了3个区间,表示匹配数字、大小写字母[8!?xq]
这样就指定匹配这5个字符,它没们有声明开始字符-结束字符
,所以都视为独立声明,一共是5个字符,其它不匹配
JS代码 ¶
//一个或多个 3到8 的数字
console.log('20438y'.match( /[3-8]+/ )[0]); // 438
console.log('204398y'.match( /[3-8]+/ )[0]); // 43 因为3后面被9中断了
console.log('204398y'.match( /[3-8]+/g )); // 43 8 全局匹配模式才能匹配 43 和 8 ,因为被9隔开了
console.log('20438y'.match( /[0-9]+/ )[0]); // 20438
console.log('20438y'.match( /[a-z]+/ )[0]); // y
console.log('20438y'.match( /[A-Z]+/ )); // null
console.log('20438y'.match( /[xz]+/ )); // null 因为只要字母x和z
//匹配 英数字下划线 的账号部分
console.log('小芳,请加我微信 Marco_123'.match( /[0-9a-zA-Z_]+/ )[0]); // Marco_123
PHP代码 ¶
//一个或多个 3到8 的数字
preg_match('#[3-8]+#', '20438y', $matchResult1);
preg_match('#[3-8]+#', '204398y', $matchResult2);
preg_match_all('#[3-8]+#', '204398y', $matchResult3);
preg_match('#[0-9]+#', '20438y', $matchResult4);
preg_match('#[a-z]+#', '20438y', $matchResult5);
preg_match('#[A-Z]+#', '20438y', $matchResult6);
preg_match('#[xz]+#', '20438y', $matchResult7);
//匹配 英数字下划线 的账号部分
preg_match('#[0-9a-zA-Z_]+#', '小芳,请加我微信 Marco_123', $matchResult8);
header('Content-type:text/plain');
print_r([
$matchResult1[0], // 438
$matchResult2[0], // 43
$matchResult3, // 43 8
$matchResult4[0], // 20438
$matchResult5[0], // y
$matchResult6, // 空数组,失败
$matchResult7, // 空数组,失败
$matchResult8[0], // Marco_123
]);