gpt4 book ai didi

javascript - 使用正则表达式验证表单 (Javascript Regex)

转载 作者:行者123 更新时间:2023-11-28 20:09:53 25 4
gpt4 key购买 nike

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

它应该允许所有 A-z 字符(大写和小写)以及符号“'”、“-”和“”(撇号、破折号和空格)。

目前,这就是我所拥有的:([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']*$/;

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

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

关于转义,撇号在正则表达式中没有特殊含义,因此不需要转义。仅当短划线位于字符类内部时才需要对其进行转义(如果未对其进行转义,则会将其解释为范围的一部分)。

关于javascript - 使用正则表达式验证表单 (Javascript Regex),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20058957/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com