这个Javascript的正则表达式是否正确

时间:2010-12-03 17:00:38

标签: javascript regex

我希望用户输入3个字符,它们应该是字母,而不是数字和特殊字符

 if(txt1.match('[A-Za-z]{3}')){}

以上条件是否正确?

8 个答案:

答案 0 :(得分:8)

您可以使用i正则表达式标志使匹配大小写不敏感并简化正则表达式。此外,如果没有^$,则包含三个连续字母的任何字符串都将匹配。您需要添加^$以分别匹配字符串的开头和结尾。最后,如果您不需要捕获匹配的文本,则应使用正则表达式对象的test()方法来获取简单的布尔值:

if ( /^[a-z]{3}$/i.test(txt1) ) {}

答案 1 :(得分:6)

不,你没有使用正确的分隔符来表示正则表达式,例如: /reg/

if(txt1.match(/[A-Za-z]{3}/)){}

虽然match()将从传递的任何字符串构造一个正则表达式,但是当你需要开始转义字符时,你可能会感到困惑。

您还需要分别使用开始和结束锚点^$,以确保正则表达式从字符串的开头到字符串的结尾匹配:

if(txt1.match(/^[A-Za-z]{3}$/)){}

最后,如果您只需要truefalse支票(在这种情况下),请使用test()代替match()

if(/^[A-Za-z]{3}$/.test(txt1)){}

test()是一个关于正则表达式实例的方法,因此正则表达式在函数调用之前出现。

答案 2 :(得分:2)

这将匹配任何包含3个或更多字符的字符串,将其限制为严格的3个字母,请尝试

if(txt1.match('^[A-Za-z]{3}$')){}

答案 3 :(得分:2)

非常接近

if(txt1.match(/[A-Za-z]{3}/)) {}

注意:如果用户输入3个字母而不是数字或特殊字符,则上述内容将匹配。如果用户输入类似

的内容,它也会匹配
234abc098

如果你想确保它只有3个字符,那么一定要把字符串的开头和字符串标记的结尾放在正则表达式中

^[A-Za-z]{3}$

答案 4 :(得分:2)

if (txt1.match(/^[A-Za-z]{3}$/)) { }
我改变了两件事。首先Javascript中的正则表达式以斜杠开头和结尾。其次,我添加了一个开始和结束字符(^和$)。这可以确保字符串的stat后跟3个字母,然后结束。意思是它必须正好是3个字母。

答案 5 :(得分:2)

没有。首先,语法是错误的,它应该使用正则表达式文字(实际上,字符串似乎也在这里工作):

txt1.match(/[A-Za-z]{3}/)

接下来,如果您想要3个字符而不是更多字符,请确保包含开始和结束锚点:

txt1.match(/^[A-Za-z]{3}$/)

答案 6 :(得分:2)

Javascript具有正则表达式的特殊语法:/regex/。以下显示了正则表达式的正确实现:

if(txt1.match(/[A-Za-z]{3}/)){}

在String对象(如"string")和RegExp对象(如/regex/)上有几个可用的RE(正则表达式)函数。如果您只想在不保存结果的情况下针对正则表达式测试字符串,建议使用RegExp.test函数:

if(/^[A-Za-z]{3}$/.test(txt1)){}

注意:我添加了^$因为它应匹配所有字符,包含3个字符是不够的。 ^表示字符串的开头,$表示结束。

答案 7 :(得分:1)

首先,你必须使用正斜杠而不是单引号来直接将正则表达式传递给javascript中的match()。

此外,如果连续出现在已检查的字符串中有3个字母,那么您目前正在检查表达式。如果您想确保用户只输入3个字母而不输入其他内容,请同时检查字符串的开头(^)和结尾($)与正则表达式。完整的表达式如下所示:

if(txt1.match(/^[A-Za-z]{3}$/)){}