我需要匹配Javascript正则表达式
中字符串中所有出现的//无法匹配///或/
到目前为止,我有(.*[^\/])\/{2}([^\/].*)
这基本上是“不是/的东西,后跟//后跟不是/”
的东西这种方法似乎与我想要匹配的字符串以//
开头的方式不同这不起作用:
//示例
这样做
stuff // example
如何解决这个问题?
编辑:更多上下文 - 我试图用!替换//,所以我正在使用:
result = result.replace(myRegex, "$1 ! $2");
答案 0 :(得分:5)
替换 开始字符串或不遵循斜杠的两个斜杠, 和之后是任何不是斜杠或字符串结尾的东西。
s=s.replace(/(^|[^/])\/{2}([^/]|$)/g,'$1!$2');
答案 1 :(得分:0)
使用此:
/([^/]*)(\/{2})([^/]*)/g
e.g。
alert("///exam//ple".replace(/([^/]*)(\/{2})([^/]*)/g, "$1$3"));
编辑:根据评论更新了表达式。
/ [/] {2} /
e.g:
alert("//example".replace(/[/]{2}/, ""));
答案 2 :(得分:0)
看起来它对example//
也不起作用。
问题是因为您匹配//
前后至少有一个非斜杠字符。这可以通过锚定正则表达式来解决,然后您可以使前/后文本可选:
^(.*[^\/])?\/{2}([^\/].*)?$
答案 3 :(得分:0)
使用negative lookahead/lookbehind断言:
(.*)(?<!/)//(?!/)(.*)