3

私は正規表現があまり得意ではありませんが、非論理的なことが起こっています:
私はこのフィドルで正規表現の構文を検証しました: http://jsfiddle.net/BcQfQ/2/そして、\dを別の正規表現に置き換えてチェックしましたここからの url: http://daringfireball.net/2010/07/improved_regex_for_matching_urlsと動作していません: http://jsfiddle.net/bNHQs/2/。そして最も奇妙なことは、正規表現をコピーしてテキストボックスに貼り付ける (そしてコードに textbox.value を書き込む) と、すべて問題ないことです: http://jsfiddle.net/6uAQG/2/

動作しない正規表現のコード:

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");

コードに正規表現を記述して機能させるにはどうすればよいですか?

4

1 に答える 1

5

You have to escape the delimiters ("/") using a backslash. The delimiters mark the begin and the end of the expression. You can only use the slash when you escape it with a backslash. The following expression should work:

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`!()\[\]{};:'".,<>?«»“”‘’]))/;
于 2012-05-08T18:05:38.343 に答える