0

我想使用preg_match来捕获包含以下内容的子字符串:

  • AZ、az、所有重音字符
  • 空间
  • 连字符

它不能捕获包含其他任何内容的字符串,包括数字字符。

这个例子很接近,但也捕获了包含数字字符的字符串:

preg_match("/([\p{L} -]+)/u", $string)

一个类似的问题已经有了答案(上面的那个),但它不起作用......

4

1 回答 1

0

如果我正确理解了您的问题(我可能没有),那么您只需使用^ and$字符来指定“匹配必须从这里开始,匹配必须从这里结束”:

/^([\p{L} -]+)$/u
 ^            ^

preg_match仅当字符串中没有其他内容时才会返回 true 。

演示

编辑

如果连字符/空格只允许在中间:

/^([\p{L}](?:[\p{L} -]+[\p{L}])?)$/u

演示

于 2013-10-02T09:45:15.523 回答