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