preg_match_all alpha +重音字符,但不是数字

时间:2013-10-02 09:39:11

标签: php

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

  • A-Z,a-z,所有重音字符
  • 空间
  • 连字符

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

此示例已关闭,但也会捕获包含数字字符的字符串:

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

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

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题(我可能没有),那么你只需要使用^$字符来指定“匹配是从这里开始和匹配HAS在这里结束“:

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

然后preg_match只有在字符串中没有其他内容时才会返回true。

DEMO

修改

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

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

DEMO