Regex 用于测试整个单词的正则表达式

Regex 用于测试整个单词的正则表达式,regex,Regex,我有一个表达式[a-zA-Z]|ñ|ñ*,我想用它来阻止文本框中输入的所有字符,但字母和|除外。 问题是返回的匹配项为:A9023,但也为32。我怎么做才能返回一个匹配A9023而不是32。 谢谢。确定你不是指^[a-zA-Z]|ñ|ñ*$-你可能找到了你想要的字符,但不排除你不想要的字符?我提到的表达式将固定到字符串的开头^和结尾$,这样就不会传递任何其他内容。否则: 123ABC456 …将通过您的匹配,因为它找到0个或更多字母。。。尽管还有其他字母。您需要为字符串的开头和结尾添加断言:

我有一个表达式[a-zA-Z]|ñ|ñ*,我想用它来阻止文本框中输入的所有字符,但字母和|除外。 问题是返回的匹配项为:A9023,但也为32。我怎么做才能返回一个匹配A9023而不是32。 谢谢。

确定你不是指^[a-zA-Z]|ñ|ñ*$-你可能找到了你想要的字符,但不排除你不想要的字符?我提到的表达式将固定到字符串的开头^和结尾$,这样就不会传递任何其他内容。否则:

123ABC456

…将通过您的匹配,因为它找到0个或更多字母。。。尽管还有其他字母。

您需要为字符串的开头和结尾添加断言:

^([a-zA-Z]|ñ|Ñ)*$
否则,正则表达式在任何位置都匹配。此外,还可以将[a-zA-Z]|ñ|ñ*作为字符类[a-zA-Zñ]*:


<>你没有说你使用的是哪种正则表达式,但是你可能想考虑< /P>
^\p{L}*$
如果您的正则表达式风格支持Unicode属性或

^[^\W\d_]*$
如果没有

原因:您的正则表达式将只允许非重音字母,并且ñ-是否有一种真正的语言使用后者而不使用重音字母

\p{L}指任何“语言”中的任何字母


[^\W\d_u]表示既不是非字母数字、数字也不是下划线的任何字符,这只是说任何字母\W是字母、数字或下划线的简写,\W是字母、数字或下划线的反义词。

此外,Expresso是测试正则表达式的一个很好的工具。。。
^[^\W\d_]*$