1

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

应匹配的示例:Example 123One Two Three
应该拒绝的示例:example&or (以一个或多个空格开头,并且 "Example" 和 "of) 之间有多个空格Example of foo

4

1 回答 1

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';

检查演示以查看实际情况。

于 2013-06-03T15:22:04.983 回答