gpt4 book ai didi

javascript - ((xn--)?[a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,} 适用于 regexpal.com,但不适用于 jsfiddle.net

转载 作者:行者123 更新时间:2023-11-30 08:04:47 25 4
gpt4 key购买 nike

所以下面“模式”中包含的这个正则表达式,只应该匹配我在下面评论中所说的内容(最基本的匹配是 1 个字母后跟一个点,然后是两个字母)

var link = "Help"
// matches www-data.it -- needs at least (1 letter + '.' + 2 letters )
var pattern = '((xn--)?[a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}';
var re2 = new RegExp('^' + pattern, 'i');


// if no http and there is something.something
if (link.search(re2) == 0)
{
link = link;
}

当我测试这段代码@ http://regexpal.com/它有效,例如只有一些东西。一些东西过去了。

当我在 JSFiddle 和生产中测试它时,它比它应该匹配的更多,例如“帮助”匹配。 http://jsfiddle.net/2jU4D/

这是怎么回事?

最佳答案

您应该使用 native 正则表达式语法构造正则表达式:

var re2 = /^((xn--)?[a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}/i;

特别是,当您调用 new RegExp() 时,正则表达式中的 \. 看起来只是普通的 .。字符串语法也使用反斜杠进行引用,所以当表达式第一次被解析为字符串时,反斜杠将被“吃掉”。

或者:

var pattern = '((xn--)?[a-z0-9]+(-[a-z0-9]+)*\\.)+[a-z]{2,}';
var re2 = new RegExp('^' + pattern, 'i');

加倍反斜杠将为您留下要传递给 RegExp 构造函数的正确字符串。

关于javascript - ((xn--)?[a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,} 适用于 regexpal.com,但不适用于 jsfiddle.net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19986828/

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