gpt4 book ai didi

javascript - 在这种情况下,正则表达式中的 '[' 是什么(2个问题)

转载 作者:行者123 更新时间:2023-12-02 18:09:51 25 4
gpt4 key购买 nike

我的最终正则表达式(更新):

^[A-z0-9]*([\.]?\w*)*[A-z0-9]+@[A-Za-z0-9]([\.]?\w+)+\.[A-Za-z][A-Za-z][A-Za-z]$

第一个问题

我知道方括号 [] 用于字符集/类,但我不明白的是为什么它不需要右括号,并导致我的 Reg-ex行为怪异。例如这里原来是

[A-z0-9]*[\.?[\w+]+[A-z0-9]+@[A-Za-z0-9][\.?[A-Za-z0-9+]+\.[A-Za-z][A-Za-z][A-Za-z]
Matches ----> reg.ex.email@gmail.com

请注意,\. 之前的第二个 [ 以及第二个 \. 之前的第六个 [ > 这两个没有任何右括号。我也知道?表示零个或一个前面的元素。当我删除括号 9]*\.?[\w 时,正则表达式无法识别字符串的 reg. 部分。我还尝试添加右括号 [\.?[\w+]][\.?][\w+],但它也会导致相同的行为,请注意第一个 [\.?[\w+]] 导致它根本无法识别该字符串。谁能帮忙解释一下这种行为吗?

第二个问题

基于上述正则表达式,我正在使用 JavaScript 正则表达式来测试我的字符串。我不知道为什么测试会通过,即使只有部分字符串通过了测试。我的一些测试用例

reg@asld@fja.com
reg.exp.email@gmial@gmail.com
reg.exp.email@gm@il.com
reg.exp.themail@gmail.com

我应该澄清只有reg.exp.themail@gmail.com应该通过

如果您转到this site通过我的正则表达式和测试字符串,您可以明白我的意思。在我的 javascript 中我有这个

var inputVal = $(this).val();       
var re = /[A-z0-9]*[\.?[\w+]+[A-z0-9]+@[A-Za-z0-9][\.?[A-Za-z0-9+]+\.[A-Za-z][A-Za-z][A-Za-z]/;
if (!re.test(inputVal)) {
$("#emailValidate").css({"display": "inline-block", "color":"red","margin-top":"4px"});
} else {
$("#emailValidate").css("display", "none");
}

上面的测试用例通过了。对这个有什么想法吗?

最佳答案

回答第一个问题

在字符类中包含开括号 [ 是可以的,并且它不会在第一个字符类中创建另一个字符类。这就是为什么可以接受将其包含在字符类中而不转义到字符类中的原因。

回答第二个问题

您需要将模式括在行首 ^ 和行尾 $ anchor 之间,以便它匹配整个输入字符串而不是其中的一部分像这样:

^[A-z0-9]*[\.?[\w+]+[A-z0-9]+@[A-Za-z0-9][\.?[A-Za-z0-9+]+\.[A-Za-z][A-Za-z][A-Za-z]$
| |
Start-Of-Line End_Of_Line

Regex101 Demo

关于javascript - 在这种情况下,正则表达式中的 '[' 是什么(2个问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19795840/

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