繁体   English   中英

这个Java正则表达式正确吗?

[英]Is this Regular expression for Javascript is correct

Iam寻找用户输入3个字符,并且应为字母,而不是数字和特殊字符

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

以上条件是否正确?

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

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

不,您没有为正则表达式使用正确的分隔符,例如/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()是正则表达式实例的一种方法,因此正则表达式位于函数调用之前。

它将与任何具有3个或更多字符的字符串匹配,以将其严格限制为3个字母,请尝试

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

很接近

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

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

234abc098

如果要确保总共只有3个字符,请确保将正则表达式中的字符串开头和字符串末尾放入

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

我改变了两件事。 首先,Javascript中的正则表达式以斜杠开头和结尾。 其次,我添加了开始和结束字符(^和$)。 这样可以确保字符串的统计信息后面跟随3个字母,然后结束。 表示它必须正好是3个字母。

不会。首先,语法错误,应使用正则表达式文字(实际上,字符串在这里也可以使用):

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

接下来,如果您需要3个字符或更多,请确保包括开始和结束锚点:

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

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

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

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

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

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

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

另外,您当前正在使用表达式检查的是,如果连续3个字母出现在选中的字符串中。 如果要确保用户仅输入3个字母,不要输入其他任何字符,请同时使用正则表达式检查字符串的开头( ^ )和结尾( $ )。 完整的表达式如下所示:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM