我想检查几个必须满足以下条件的文本框:我的意思是字母表来自a-z(大写和小写)数字0-9,特殊字符是~`!@#$%^&*()-_+={}[];:'",<>/?
我找到了一个解决方案,但似乎对我没有用:
/^[a-z0-9/. -!@#$%^&*(){}:;"',/?]+$/i我正在检查它,因为:
var alpha=/^[a-z0-9/. -!@#$%^&*(){}:;"',/?]+$/i;
if (!alpha.test(username.value))
{
alert('Invalid username');
document.theForm.username.focus();
return false;
}发布于 2013-06-20 05:50:13
你能给出一些输入的例子吗?你能试试这个吗?
/.*?[a-zA-Z]+.*/或者如果需要指定特殊字符的列表:
/[list of chars]*?[a-zA-Z]+[list of chars]*/发布于 2013-06-20 05:57:03
问题可以重表示为匹配只包含字符的字符串。
A-Za-z0-9~`!@#$%^&*()-_+={}[];:'",.<>/?至少其中一封是一封信。
幸运的是,您已经涵盖了范围U+0021到U+007F中的所有可打印字符,因此所需的regex只是简单地
[!-~]*[A-Za-z][!-~]*编辑:在仔细阅读时,我注意到您不允许反斜杠!如果您想允许反斜杠,上面的正则表达式是可以的;如果不允许,您应该这样修改它:
[!-\[\]-~]*[A-Za-z][!-\[\]-~]*这有点丑,因为为了排除反斜杠,我们不得不说
!到[中的所有字符-- ]到~范围中的联合字符--以及对[和]的明确提及都需要用(您猜到的) \来转义。希望您能够允许使用\,这样您就可以使用上面更简单的正则表达式了。
编辑2
为了提高正则表达式的效率,您应该使用一个不情愿的量词(就像kcsoft那样):
[!-~]*?[A-Za-z][!-~]*对于JavaScript,但对于matches,如果使用matches,则应该锚定正则表达式以匹配整个字符串,并在JavaScript中给出如下内容:
/^[!-~]*?[A-Za-z][!-~]*$/而且,正如您在问题中所做的那样,您可以通过使用i修饰符来缩短它:
/^[!-~]*?[A-Z][!-~]*$/ihttps://stackoverflow.com/questions/17206092
复制相似问题