我想使用PHP的preg_match_all来捕获包含以下内容的子串:
它不能捕获包含其他任何内容的字符串,包括数字字符。
此示例已关闭,但也会捕获包含数字字符的字符串:
preg_match_all("/([\w -]+)/u", $abigstring, $matches);
答案 0 :(得分:3)
这是Unicode属性的工作:
preg_match_all("/([\p{L} -]+)/u", $abigstring, $matches);
\p{L}
匹配任何具有Unicode属性“Letter”的字符。
答案 1 :(得分:2)
这也是一个选择:
preg_replace("/[^A-Za-zÀ-ÿ -]+/u", "", "juana 123456 sfdf 423 999 _ -a- dsa & ç%& à à$¨à+", -1);
这是一个工作示例 - > https://xrg.es/#17hyhfm
答案 2 :(得分:0)
对于那些想要的人,这里是对上面代码的修正不起作用!
preg_match("/^([\p{L} -]+)$/u", $string)
失去了锚点(^和$)
编辑:好多了。如果仅在中间允许连字符/空格:/^([\p{L}](?:[\p{L} -]+[\p{L}])?)$/u