我在这里做错了什么?
我正在尝试使用javascript将字符串中的数字替换为另一个数字。我有一个很长的字符串,其中数字为1。我需要在每种情况下将数字1替换为2,除非1在另一侧有另一个数字。我做了一堆谷歌搜索如何使用正则表达式(我对正则表达式来说是全新的)并且我想出了这个。
string.replace(/(?<!\d)1(?!\d)/,2);
基本上,我希望正则表达式匹配(并因此替换)数字1的每次出现,除了另一个数字之外,它被包围。我不希望匹配包含周围的字符 - 只有数字1。
我在firebug控制台中不断收到无效的量词错误。我做错了什么?
答案 0 :(得分:7)
这一点:(?<!\d)
。没有(?<
,只有(?:
,(?=
和(?!
。
JavaScript并不具有后瞻性,但我认为你可以在这种情况下解决它,如下所示:
str = str.replace(/(^|\D)1(?!\d)/g, "$12")
捕获紧接数字之前的字符,然后将其回送(替换字符串中的$1
),然后回显新内容(2
)。开头附近的^
允许数字是字符串中的第一个字符。
打破它:
(^|\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
在替换中,$12
不&#34;替换为捕获组12&#34; (这对我来说是这样的),但&#34;替换为捕获组1,后跟数字2。&#34;