繁体   English   中英

使用正则表达式验证表单(JavaScript正则表达式)

[英]Validating forms with Regular Expressions (Javascript Regex)

我有一个输入表单,需要实时验证(.Keyup和.Load)

它应该允许所有Az字符(上和下)以及符号“'”,“-”和“”(撇号,破折号和空白)。

目前,这就是我所拥有的:([[A-Za-z]-\\ s \\')**,而我正在这样使用它:

var regex = /([A-Za-z]\-\s\')*/;
if (string == "") {
  turn textbox border grey (default)
} else if (!regex.test(string)) {
  turn textbox border red
} else {
  turn textbox border green
}

它所做的一切都会使文本框每次都变为绿色(除非它为空白-变为灰色)。 什么是正确的表达/技术,我在做什么错?

您需要以下内容:

var regex = /^[A-Za-z\-\s']*$/;

^$分别是字符串锚点的开头和结尾。 没有这些匹配项可能会在字符串中的任何位置开始或结束。 由于*表示“将前一个元素重复零次或多次”,因此无论内容如何,​​每个字符串都将匹配,因为正则表达式可以成功匹配零个字符。

当前正则表达式的另一个问题是[A-Za-z]\\-\\s\\'将尝试按顺序匹配字母,破折号,单个空格字符和撇号(总共4个字符)。 要匹配这些选项中的任何一个,您需要将它们全部放在字符类(方括号)内,或与竖线字符( | )交替使用,看起来像([A-Za-z]|-|\\s|') 交替是更通用的,但是字符类是诸如此类的首选方法。

关于转义,撇号在正则表达式中没有特殊含义,因此不需要转义。 如果破折号在字符类中,则仅需将其转义(如果未转义,则将其解释为范围的一部分)。

暂无
暂无

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

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