我无法制作零或一“?” 在javascript中优先出现一次而不是零。
前任。这是我的正则表达式:(=1)?
这是我的字符串,str:abcd=1
当我这样做时,regex.exec(str)
我得到以下返回:["",undefined]
。看起来它在我的字符串的开头选择了零长度匹配。有没有办法让它选择'=1'?可能这在其他语言中可能会有所不同,但我目前正在使用 javascript,这似乎是这种情况。
我无法制作零或一“?” 在javascript中优先出现一次而不是零。
前任。这是我的正则表达式:(=1)?
这是我的字符串,str:abcd=1
当我这样做时,regex.exec(str)
我得到以下返回:["",undefined]
。看起来它在我的字符串的开头选择了零长度匹配。有没有办法让它选择'=1'?可能这在其他语言中可能会有所不同,但我目前正在使用 javascript,这似乎是这种情况。
该表达式(=1)?
将优先于一次出现而不是零,但正则表达式引擎将始终尝试尽可能早地匹配字符串。所以从字符串中的第一个字符开始,首先它会尝试匹配=1
并失败,然后因为?
它会匹配空字符串。
我认为以下表达式与您的意图最相似:
(?:.*(=1))?
如果它位于字符串中的任何位置,这将放入第一个捕获组,但由于使非捕获组可选=1
,每个字符串仍将匹配。?
在javascript中默认?
是贪婪的。你的问题在别的地方。
旁注:要?
懒惰,您必须编写??
(像其他量词一样)
(=1)*
将匹配=1=1=1=1=1=1=1=1
如果您希望匹配之后的所有数字,请=
使用
abcde=(\d+)
这会将所有数字放入捕获组 1。