javascript中正则表达式的结果非常奇怪
我的正则表达式不是很好,但有一件不合逻辑的事情正在发生:javascript中正则表达式的结果非常奇怪,javascript,regex,Javascript,Regex,我的正则表达式不是很好,但有一件不合逻辑的事情正在发生: 我用fiddle:验证了一个正则表达式的语法,然后将\d替换为另一个正则表达式,以从这里检查url:它不工作:。最奇怪的是,当您复制正则表达式并将其粘贴到文本框中(然后在代码中写入textbox.value)时,一切正常: 不工作正则表达式的代码: var reg=/\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s
我用fiddle:验证了一个正则表达式的语法,然后将
\d
替换为另一个正则表达式,以从这里检查url:它不工作:。最奇怪的是,当您复制正则表达式并将其粘贴到文本框中(然后在代码中写入textbox.value)时,一切正常:
不工作正则表达式的代码:
var reg=/\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/;
var str="2";
if(str.match(reg))alert("test:true");
else alert("test:false");
(2)以下::/{1,3}(1-3)}[a-z0-9-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10%的)10.2.目前,以及(2.0.代码>var-0.0.0)的主要主要部分部分部分部分部分)的主要主要主要是,以及//b(以下以下以下以下以下以下以下以下以下以下以下以下以下)的::::::::::::///////////[[[[[1-1.1-1.1.1.3-1.3-3-3-3-3-3-3-3-3-3-3-3-3-3-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10]{};:“,«»””)/;
var str=“2”;
如果(str.match(reg))警报(“测试:真”);
else警报(“测试:错误”);
如何在代码中写入正则表达式以使其工作?必须使用反斜杠转义分隔符(“/”)。分隔符标记表达式的开始和结束。只有使用反斜杠转义时才能使用斜杠。以下表达式应能工作:
var reg=/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/;
(2)以下::/{{1,3}(a-0-0-10-10-9-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10%的)10.目前,在以下以下两个(代码)部分部分)的主要主要是:::::::/{{{{1,3}(a-10-10-10-10-10-9-9-9-9-9-9-9-9-9-9-9-9-10-10-10-10-10-10-10)的部分)的主要主要主要主要是,,,///////))))除除了除了除了除了上述上述上述上述上述上述上述上述上述上述上述上述上述两个,以及(1.10.10.10.10.10,以及(10.3-3-10.3-10.10[\]{};:“,«»””)/;
当您使用文本框中的文本时,请在此处发布相关代码(不过也要感谢JSFIDLE)。当您使用表达式时(请注意,它没有用引号括起来),它是一个特殊的对象
typeof(“/foo/”)==“string”
但是typeof(/foo/)==“object”
。在一个字符串中,您不需要逃避斜杠。