Javascript 用正则表达式只能匹配一个字符中的两个,而不是三个
我需要匹配Javascript正则表达式中字符串中出现的所有// 它不能匹配///或/ 到目前为止,我有Javascript 用正则表达式只能匹配一个字符中的两个,而不是三个,javascript,regex,Javascript,Regex,我需要匹配Javascript正则表达式中字符串中出现的所有// 它不能匹配///或/ 到目前为止,我有(.*[^\/])\/{2}([^\/].*) 基本上是“不是的东西,后面跟着//后面跟着不是的东西” 这种方法似乎与我想要匹配的字符串开始时不同// 这不起作用: //范例 确实如此 stuff//示例 我如何解决这个问题 编辑:更多的上下文-我正在尝试用!,因此,我现在使用: result = result.replace(myRegex, "$1 ! $2"); 使用以下命令: /([
(.*[^\/])\/{2}([^\/].*)
基本上是“不是的东西,后面跟着//后面跟着不是的东西”
这种方法似乎与我想要匹配的字符串开始时不同//
这不起作用:
//范例
确实如此
stuff//示例
我如何解决这个问题
编辑:更多的上下文-我正在尝试用!,因此,我现在使用:
result = result.replace(myRegex, "$1 ! $2");
使用以下命令:
/([^/]*)(\/{2})([^/]*)/g
e、 g
编辑:根据注释更新表达式
/[/]{2}/
e、 g:
它看起来对
示例//
也不起作用
问题在于您正在匹配的/
前后至少有一个非斜杠字符。这可以通过锚定正则表达式来解决,然后您可以选择前面/下面的文本:
^(.*[^\/])?\/{2}([^\/].*)?$
使用断言:
(.*)(?替换字符串开头或不在斜杠后面的两个斜杠,
和后面跟的不是斜杠或字符串结尾
s=s.replace(/(^|[^/])\/{2}([^/]|$)/g,'$1!$2');
您是否只需要匹配/
或其周围的文本?我正在尝试将所有出现的//替换为!对于简单的字符串操作,您应该使用简单的字符串操作,如字符串。替换,而不是正则表达式。匹配一个(或两个)chars可以作为一个简单的字符串操作。@nikc:他使用的是string.replace
。您如何指定只替换//
,而不替换没有正则表达式的//
?@Felix:啊,我的糟糕,威士忌太多了。错过的//
(和朋友们)应该被忽略。这将替换“foo///bar”的一部分
,询问者提到他不想这样做。JavaScript不支持lookbehinds。@Devbook.co.uk:你一定做错了什么,对我来说非常有效。抱歉,复制和粘贴失败,似乎有效谢谢:)
^(.*[^\/])?\/{2}([^\/].*)?$
s=s.replace(/(^|[^/])\/{2}([^/]|$)/g,'$1!$2');