我试图只允许字母数字和空格。
没有_。 ! 〜`
和任何其他特殊字符(我知道_应该是字母......我只是不想要它)
我的问题是:我该怎么写呢?
大多数情况下,我发现了回答指出了非法的字符#34;像:
^[^$&+,:;=?@}{#|'\\<>\/.^*()%!\]\[~`_-]+[^$&+,:;=?@}{#|'\\<>\/.^*()%!\]\[~`_-]*$
但我想知道是否有更好的方式来做:
^[a-zA-Z0-9\s]+[a-zA-z0-9\s]*$
这个问题是,如果字符[]^``_\
在字母/数字/空格之后仍然通过
[]`\^_ <<this will be illegal
1[]`\^_ <<this will not be caught as illegal
我也尝试过:^[\w\d\s]+[\w\d\s]*$
但它让_直到
编辑 我在第二个代码(A-z)中输入了拼写错误,因此将其更改为
^[a-zA-Z0-9\s]+[a-zA-Z0-9\s]*$
它完美无缺
所以最好这样写,而不是输入everysingle特殊聊天(如第一个代码)? 是否有可能通过此检查滑倒的角色?
答案 0 :(得分:1)
如果我理解你的问题,你可以使用否定的字符类来做到这一点。例如,匹配所有非字母的字符:
[^A-Za-z]+
您可以使用锚点来匹配仅包含字母的行
^[^A-Za-z]+$
如果您将空格或空格(\s
)视为有效,只需将其添加到字符类:
^[^A-Za-z\s]+$
与“最佳”方法相关,您可以肯定地比较性能,但如果性能没有太大影响,最好的方法是什么,imho是最易读的表达方式。
答案 1 :(得分:-1)
以下内容应该有效(上面示例的更正/简化版本)
如果要包括所有字母(上部或下部)和任何数字,只包括空格字符:
^[a-zA-Z0-9 ]+$
如果你想要任何空格:
^[a-zA-Z0-9\s]+$