Escape双引号正则表达式JavaScript

时间:2013-08-11 19:26:57

标签: javascript regex

我有一个简单的问题。如何匹配未用双引号括起来的任何字符串或/和<和>字符序列?

实施例。我有这个链接。如果它用双引号括起来,我不想匹配它。

((https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])

这不起作用,将[^“]放在开头和结尾处:

([^"](https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|][^"])

因为没有用双引号括起来的链接不会匹配,除非它们以除了doule引号之外的其他内容开头。

3 个答案:

答案 0 :(得分:0)

我不会尝试在一个RegEx中执行此操作,因为您已经注意到,它可能无法正常工作。

假设您尝试执行类似自动链接的操作,包括搜索中的可选引号,然后将其丢弃,则可以正常工作:

var re = /"?(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|]"?/gi;
var quoted = /^".+"$/;

var txt = 'A real link: http://www.example.com and a quoted link: "http://www.example.com".';

txt = txt.replace(re, 
            function(str) {
              if (str.match(quoted))
                return str;
              else
                return '<a href="' + str + '">' + str + '</a>';
            }
            );

$('#mydiv').html(txt);

一个工作示例:http://codepen.io/paulroub/pen/nlExh

答案 1 :(得分:0)

正如Esailija建议的那样,用^和$围绕你的正则表达式会起作用。在您的控制台中试试这个。这是匹配裸URL的正则表达式:

  

&GT; 'http://www.something.com' .match(/ ^((HTTPS | FTP |文件):// [2 -A-Z0-9 +&安培; @#/%=〜_ |:。;] * [-A-Z0-9 +&安培; @#/%=〜_ |])$ / I)

     

[“http://www.something.com”,“http://www.something.com”,“http”]

并且它不匹配嵌入双引号或尖括号中的URL:

  

&GT; ' “http://www.something.com”' .match(/ ^((HTTPS | FTP |文件):// [-A-Z0-9 +&安培; @#/%=〜_ | !:;] * [ - A-Z0-9 +&安培; @#/%=〜_ |])$ / I)

     

     

&GT; '&GT; http://www.something.com&LT;' 匹配(/ ^((HTTPS | FTP |文件):?// [-A-Z0-9 +&安培; @#/%=〜 _ |:。;] * [ - A-Z0-9 +&安培; @#/%=〜_ |])$ / I)

     

不要选择这个答案,因为我只是重申Esailija的建议。

答案 2 :(得分:0)

这是可能的,因为这有效:               

<script>

var str='https://test.com/';
var patt=/[^"].*[^"]/g;

var result=patt.test(str);
document.write("Returned value: " +  result); 

str='"http://test.com/"';
result=patt.test(str);
document.write("<br>Returned value: " +  result);

</script>
</body>
</html>

也许这是你的错误链接的正则表达式