gpt4 book ai didi

javascript - .trim() 和正则表达式产生意想不到的结果

转载 作者:行者123 更新时间:2023-11-29 14:52:11 26 4
gpt4 key购买 nike

我写了一个相当简单的正则表达式来检测字符串何时看起来像是一封电子邮件:

var looksLikeEmail = /^\S+@\S+\.\S+$/gi;

我正在使用 Knockout,被测试的字符串是文本区域的值。

本质上,假设我们在变量 text 中有 textarea 的值。例如,此值是键入的值 abc@example.com

奇怪的是,即使 text === text.trim()looksLikeEmail.test(text) 返回 true,但是 looksLikeEmail.test(text.trim()) 返回 false。

另一方面,如果我手动创建字符串 var test2 = 'abc@example.com',则不会出现此问题。

这似乎向我表明文本区域正在插入一些奇怪的字符或其他东西...... .trim() 正在做一些奇怪的事情。但是 test.length === test2.lengthtest.length === test.trim().length

有谁知道如何让它正确运行?

我写了一个jsfiddle快速演示行为...

如果您转到 fiddle 并尝试输入电子邮件...您会看到问题所在。另一个奇怪的行为:在电子邮件后添加一个空格,然后将其删除。/困惑

非常感谢任何帮助。谢谢。

最佳答案

.test(),就像.exec()在使用全局正则表达式时会记住匹配的最后一个索引,并尝试从它开始匹配,第二次通话失败。只需从您的正则表达式中删除 /g 选项 - 在匹配开头和结尾的非多行正则表达式中使用 /g 是没有意义的。

关于javascript - .trim() 和正则表达式产生意想不到的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23977253/

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