用字母和重音创建正则表达式

时间:2018-08-02 16:38:43

标签: php regex

我需要创建一个与单词空白单词匹配的常规表达式,它不能以空格开头,单词和单词之间的空格不能超过1个,我必须在每个单词的字母和重音符号上使用,我正在使用此模式:

^([^\+\*\.\|\(\)\[\]\{\}\?\/\^\s\d\t\n\r<>ºª!@"·#~½%¬&=\'¿¡~´,;:_®¥§¹×£µ€¶«²¢³\$\-\\]+\s{0,1}?)*$/

示例:

-Graça+whitespace+anotherWord            -> match
-whitespace+Graça+whitespace+anotherWord -> don't match
-Graça+whitespace+whitespace+anotherword -> don't match

通常,允许带有重音字符和a-z字符的名字+空格+姓氏

是一种验证。

并且我必须排除所有特殊字符,例如/ *-+)(!/($ =

2 个答案:

答案 0 :(得分:1)

对于仅空格,请使用 str_replace

$string = str_replace(' ', '', $string);

对于所有空格,请使用 preg_replace

$string = preg_replace('/\s+/', '', $string);

答案 1 :(得分:1)

您可以尝试以下模式:^[\x{0041}-\x{02B3}]+\s[\x{0041}-\x{02B3}]+

说明:由于您使用的字符与\w不匹配,因此必须定义自己的单词字符范围。 \x{0041}只是Unicode索引等于0041的字符。

Demo