Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/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如何模仿PHP正则表达式中的负查找_Javascript_Regex - Fatal编程技术网

正则表达式Javascript如何模仿PHP正则表达式中的负查找

正则表达式Javascript如何模仿PHP正则表达式中的负查找,javascript,regex,Javascript,Regex,我有下面的regex(?和我的示例测试消息。我遇到的麻烦是将其从PHP转换为Javascript,因为Javascript不支持反向查找。我希望匹配任何hazcon 0或hazcon0,但忽略#hazcon0和#hazcon 0的任何实例 #hazcon0不要求有OctorOp,而是要求有开头(^)或OctorOp以外的字符([^#]) 与其要求没有OctorOp,不如要求有开头(^)或OctorOp以外的字符([^#]) 反向字符串方法在特定情况下可能会失败(例如,当您需要匹配连续的双撇号时,

我有下面的regex
(?和我的示例测试消息。我遇到的麻烦是将其从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