基础 - 匹配一个或多个

  • 作者:KK

  • 发表日期:2017.6.7


虽然这个在前面匹配数字已经初步接触了一下+号的作用,但这里应该正式讲讲

首先认识一下正则的基础能力:匹配指定内容

这个其实平时不会这么用,但要这样匹配也可以

JS代码

var str = 'May',
	
	pattern = /a/,
	
	matchResult = str.match(pattern);

console.log(matchResult[0]); // a

这里的表达式没什么特殊内容,/a/主是说要在里面匹配一个字母叫做a,然后甚至写成ay也可以匹配出ay两个字母

我们匹配内容无非是等同于查找需要的内容,如果上面这样的需求的话一般应该直接使用indexOf来查找:var result = 'May'.indexOf('ay');

所以这样的表达式没有实际意义,但我只是顺带一提正则表达式可以被程序员写成这么多余的存在,而正则本身却不是多余的,哈哈


PHP代码

$str = 'May';
	
$pattern = '#ay#';
	
preg_match($pattern, $str, $matchResult);

echo $matchResult[0]; // ay

匹配一个或多个

好了有营养的东西来了,如果我们要在abbbc里匹配连续出现的b,又或者在qbbbbbbbc

JS代码

var str1 = 'abc',

	str2 = 'hbbbm',

	str3 = 'xbbbbbbbbbbz',
	
	pattern = /b+/,
	
	matchResult1 = str1.match(pattern),
	
	matchResult2 = str2.match(pattern),
	
	matchResult3 = str3.match(pattern);

console.log(matchResult1[0]); // b

console.log(matchResult2[0]); // bbb

console.log(matchResult3[0]); // bbbbbbbbbb

PHP代码

$str1 = 'abc';

$str2 = 'hbbbm';

$str3 = 'xbbbbbbbbbbz';
	
$pattern = '#b+#';
	
preg_match($pattern, $str1, $matchResult1);
	
preg_match($pattern, $str2, $matchResult2);
	
preg_match($pattern, $str3, $matchResult3);

echo $matchResult1[0] . PHP_EOL; // b

echo $matchResult2[0] . PHP_EOL; // bbb

echo $matchResult3[0] . PHP_EOL; // bbbbbbbbbb

解释

在要匹配的内容后面放个+号表示匹配这个内容1次或多次,所以字母b出现1次或多次都能被匹配出来