PHP regex需要过滤单词之间的其他字符


PHP regex needs to filter other characters between words

我是PHP正则表达式的新手。我就开始玩了。我想只接受单词(它可以是2或3或4或5等),但应该只接受单词,没有特殊字符,这些单词之间没有数字。

例如a Name: "John williams lewis"

Regex应该拒绝包含类似"John 123 williams -$ Lewis"的名字

我尝试使用作为['w's]+,这个正则表达式能够接受更多的单词,但不理解如何过滤单词之间的其他字符。

我很抱歉,如果这是一个愚蠢的查询。

^[a-zA-Z][a-zA-Z ]*$

你可以试试这个。锚^$将确保您没有部分匹配。

如果您想匹配以space分隔的名称,可以使用^[a-zA-Z]+(?: [a-zA-Z])*$

'w接受所有单词字符,包括数字和字母,如果您只想匹配字母,则可以使用[a-zA-Z]。为了接受期望的结果,您可以在字符类中添加空白匹配器's:

[a-zA-Z's]+

也可以使用否定的字符类来拒绝匹配某些字符,例如以下正则表达式将匹配除数字以外的任何内容:

[^'d]+

试试这个:

^[a-zA-Z][a-zA-Z''s]+$

只接受字母(小写或大写)和空格。