我现在拥有的:preg_match("[\W|_]",$string)
,它匹配任何非单词字符和下划线。但是,我只想匹配包含字符串\w
中间的单个空格的字符串(而不$string
是以任意数量的空格开头或结尾),而不是下划线。谢谢你的帮助!
应匹配的示例:Example 123
或One Two Three
。
应该拒绝的示例:example&
or (以一个或多个空格开头,并且 "Example" 和 "of) 之间有多个空格Example of foo
。
我现在拥有的:preg_match("[\W|_]",$string)
,它匹配任何非单词字符和下划线。但是,我只想匹配包含字符串\w
中间的单个空格的字符串(而不$string
是以任意数量的空格开头或结尾),而不是下划线。谢谢你的帮助!
应匹配的示例:Example 123
或One Two Three
。
应该拒绝的示例:example&
or (以一个或多个空格开头,并且 "Example" 和 "of) 之间有多个空格Example of foo
。
啊,所以你不需要捕捉匹配的结果 - 只是为了测试字符串是否匹配某个模式。这可以通过...
$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';
检查演示以查看实际情况。