Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.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将字符串中的一个数字替换为另一个数字。我有一个长字符串,其中有数字1多次。在任何情况下,我都需要将数字1替换为2,除非1两边都有另一个数字。我在谷歌上搜索了很多关于如何使用regex的信息(我对regex完全陌生),我想到了这个 string.replace(/(?<!\d)1(?!\d)/,2); string.replace(/(?)? 基本上,我希望正则表达式匹配(并替换)数字1的每一次出现,其中数字1被除另一个数字以外的任何数字包围

我做错了什么

我正在尝试使用javascript将字符串中的一个数字替换为另一个数字。我有一个长字符串,其中有数字1多次。在任何情况下,我都需要将数字1替换为2,除非1两边都有另一个数字。我在谷歌上搜索了很多关于如何使用regex的信息(我对regex完全陌生),我想到了这个

string.replace(/(?<!\d)1(?!\d)/,2);
string.replace(/(?)?
基本上,我希望正则表达式匹配(并替换)数字1的每一次出现,其中数字1被除另一个数字以外的任何数字包围。我不希望匹配包括周围的字符——只包括数字1


我一直在firebug控制台中收到无效的量词错误。我做错了什么?

是这一位:
(?。没有
(?冒号是否是反向查找的正确运算符?我正在[链接]上阅读关于如何进行反向lookbehinds,他说使用lt字符。我用冒号替换了它,就像你说的那样,我不再得到错误,但它也不会返回任何匹配??我尝试在最后一个斜杠后添加g以匹配每一次出现,但仍然不起作用。我在这里不知道。@Jonathan:不,JavaScript没有lookbehindnd(只向前看,正面和负面)。
?:
只表示一个未捕获的块。很好的解释!非常感谢。以下是根据您给我的内容得出的结果:
var I=1;$(“#addshipmentobjecbutton”)。单击(函数(){if(i@Jonathan:替换字符串必须始终以
$1
开头。您在其后放置的任何内容都将替换
1
。开始时您需要
$1
,因为它(可能)包含
1
前面的非数字字符。哦,顺便说一句,出于某种原因,我在我的版本中非常通用,但您确实明确表示希望匹配
1
,而不仅仅是一个一位数。很抱歉,我已经修复了它。好吧……所以我上面的评论是一个巨大的失败。:)在阅读了您对答案的编辑之后,我现在明白了您的代码的作用。因此,我将我的替换代码替换为以下
replace(/(^|;D)1(?!\D)/g,“$1”+(I+1))
现在它可以工作了。每次单击按钮时,都会搜索并替换未被其他数字包围的1的每个实例上的字符串,并且每次单击后替换的字符串都会增加。谢谢您的帮助。
str = str.replace(/(^|\D)1(?!\d)/g, "$12")
(^|\D) Match either start-of-string, or a non-digit, and capture the result 1 Match the digit 1... (?!\d) ...but only if it isn't followed by a digit