Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用正则表达式只能匹配一个字符中的两个,而不是三个_Javascript_Regex - Fatal编程技术网

Javascript 用正则表达式只能匹配一个字符中的两个,而不是三个

Javascript 用正则表达式只能匹配一个字符中的两个,而不是三个,javascript,regex,Javascript,Regex,我需要匹配Javascript正则表达式中字符串中出现的所有// 它不能匹配///或/ 到目前为止,我有(.*[^\/])\/{2}([^\/].*) 基本上是“不是的东西,后面跟着//后面跟着不是的东西” 这种方法似乎与我想要匹配的字符串开始时不同// 这不起作用: //范例 确实如此 stuff//示例 我如何解决这个问题 编辑:更多的上下文-我正在尝试用!,因此,我现在使用: result = result.replace(myRegex, "$1 ! $2"); 使用以下命令: /([

我需要匹配Javascript正则表达式中字符串中出现的所有//

它不能匹配///或/

到目前为止,我有
(.*[^\/])\/{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');