正则表达式Javascript如何模仿PHP正则表达式中的负查找
我有下面的regex正则表达式Javascript如何模仿PHP正则表达式中的负查找,javascript,regex,Javascript,Regex,我有下面的regex(?和我的示例测试消息。我遇到的麻烦是将其从PHP转换为Javascript,因为Javascript不支持反向查找。我希望匹配任何hazcon 0或hazcon0,但忽略#hazcon0和#hazcon 0的任何实例 #hazcon0不要求有OctorOp,而是要求有开头(^)或OctorOp以外的字符([^#]) 与其要求没有OctorOp,不如要求有开头(^)或OctorOp以外的字符([^#]) 反向字符串方法在特定情况下可能会失败(例如,当您需要匹配连续的双撇号时,
(?和我的示例测试消息。我遇到的麻烦是将其从PHP转换为Javascript,因为Javascript不支持反向查找。我希望匹配任何hazcon 0
或hazcon0
,但忽略#hazcon0
和#hazcon 0
的任何实例
#hazcon0
不要求有OctorOp,而是要求有开头(^
)或OctorOp以外的字符([^#]
)
与其要求没有OctorOp,不如要求有开头(^
)或OctorOp以外的字符([^#]
)
反向字符串方法在特定情况下可能会失败(例如,当您需要匹配连续的双撇号时,而不是在开始括号之前)。使用负回溯的最可靠方法是使用XRegExp
库和一些
//在JavaScript中模拟无限长前导查找。使用XRegExp。
//Lookback中的捕获不包括在匹配结果中。Lazy
//重复查找可能会导致意外的结果。
(函数(XRegExp){
功能准备B(磅){
//向后看之前允许模式修改器
var parts=/^((?:\(\?[\w$]+\))\(\?反向字符串方法在特定情况下可能会失败(例如,当您需要匹配连续的双撇号而不是在开始括号之前)。使用反向查找最可靠的方法是使用XRegExp
库和一些
//在JavaScript中模拟无限长前导查找。使用XRegExp。
//Lookback中的捕获不包括在匹配结果中。Lazy
//重复查找可能会导致意外的结果。
(函数(XRegExp){
功能准备B(磅){
//向后看之前允许模式修改器
var parts=/^((?:\(\?[\w$]+\))\(\?反转示例消息并进行负面展望:reversedStr=str.split(“”)。Reverse().join(“”)反转示例消息并进行负面展望:reversedStr=str.split(“”)。Reverse().join(“”)
如果有人需要替换连续的double“
前面不带”
。此解决方案仅适用于原始问题中的字符串。@WiktorStribiżew,这不需要查找。虽然我不确定您的意思是引号不能直接放在两个连续引号之前(替换(/(^ |[^“])”/g,$1')
)或者,正如我所说,它不能在它前面(replace(/^([^“]*)”/g,$1')
),因为连续的“
前面有”
。您提供的解决方案依赖于上下文。@WiktorStribiżew,那么我一定不明白您在尝试什么。该正则表达式替换了两个不带引号的连续引号。如果有人需要替换不带引号的连续双引号,“
”,则此方法无效
。此解决方案仅适用于原始问题中的字符串。@WiktorStribiżew,这不需要查找。虽然我不确定您的意思是引号不能直接位于两个连续引号之前(replace(/(^ |[^])”“/g,$1')
),还是它根本不能位于引号之前(replace(/^([^]*))/g、 “$1”)
)正如我所说,因为连续的”
前面有“
。您提供的解决方案是上下文相关的。@WiktorStribiżew,那么我一定不明白您在尝试什么。该正则表达式替换了两个不带引号的连续引号。
(^|[^#])hazcon\s?0