正则表达式从\ W排除空格

时间:2013-06-03 15:16:11

标签: php regex preg-match

我现在拥有的内容:preg_match("[\W|_]",$string),它匹配任何非单词字符和下划线。但是,我只想匹配包含\w的字符串和字符串中间的单个空格(而不是$string以任意数量的空格开头或结尾),而不是下划线。谢谢你的帮助!

应该匹配的示例:Example 123One Two Three 应拒绝的示例:example&或(从一个或多个空格开始,以及“Example”和“of of”Example of foo之间的多个空格。

1 个答案:

答案 0 :(得分:3)

啊,所以你不需要捕捉匹配的结果 - 只是为了测试字符串是否匹配某些模式。这可以用......完成。

$pattern = '/^[A-Z0-9](?:[A-Z0-9 ]*[A-Z0-9])?$/i';

...但如果你想覆盖ASCII范围以外的字母,那注定会失败。你应该使用它来代替:

$pattern = '/^[\p{L}0-9](?:[\p{L}0-9 ]*[\p{L}0-9])?$/u';

检查demo以查看实际情况。