正则表达式 \s*和\s*? 具体有什么区别?求认真解答 thanks
一、两种表达方式表达意义的区别:
1、\s代表正则表达式中的一个空白字符(可能是空格、制表符、其他空白)。
2、\\s代表字符\和字符s,因为\在正则中有特殊意义,所有需要转义,写成了\\ 。
二、表达的作用的区别:
1、\s用于匹配空白字符。
2、\\s用于匹配字符串中的\和s,两个字符。
扩展资料:
另外,正则表达式的() [] {}也有不同的意思
1、() 是为了提取匹配的字符串。表达式中有几个()就有几个相应的匹配字符串。
2、(\s*)表示连续空格的字符串。
3、[]是定义匹配的字符范围。比如 [a-zA-Z0-9] 表示相应位置的字符要匹配英文字符和数字。[\s*]表示空格或者*号。
4、{}一般用来表示匹配的长度,比如 \s{3} 表示匹配三个空格,\s[1,3]表示匹配一到三个空格。
(0-9) 匹配 '0-9' 本身。 [0-9]* 匹配数字(注意后面有 *,可以为空)
[0-9]+ 匹配数字(注意后面有 +,不可以为空){1-9} 写法错误。
[0-9]{0,9} 表示长度为 0 到 9 的数字字符串。
5、过滤内容里面有数或空格数字
preg_replace("/\d{1,}\s{0,1}/", "xxxxxxxx", $signaturecontent);
参考资料来源:百度百科--正则表达式
1、贪婪模式:正则表达式一般趋向于最大长度匹配。
2、非贪婪模式:反之,取最小长度匹配
3、如何区分:在量词(* + ? {m,n})后面加上 ? 号,就是非贪婪模式
由于\s是匹配空格,不好说明,我们用下面的例子来说明:
正则表达式: \d+ 和 \d+?
字符串:asd12sd345
\d+匹配结果:12、345(尽可能多的匹配)
\d+?匹配结果:1、2、3、4、5(匹配最小数量,也就是1个)
那么,同理\s*和\s*?这俩的区别就是:
\s*:匹配0个或多个空格,会尽可能多的匹配
\s*?:匹配最小数量的空格,也就是0个空格
*是贪婪模式,会尽可能匹配更多的字符
而*?是非贪婪模式 会尽量匹配少的字符
例子 假设字符串是121212
\d*2 会匹配到整个字符串 121212
而 \d*?2 会捕获到3个匹配组 分别是 12 12 12
2016-11-01
js? 还是别的?