Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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 Node.js regex替换复杂HTML打开标记中的多个属性_Javascript_Regex_Node.js - Fatal编程技术网

Javascript Node.js regex替换复杂HTML打开标记中的多个属性

Javascript Node.js regex替换复杂HTML打开标记中的多个属性,javascript,regex,node.js,Javascript,Regex,Node.js,我正在处理一个Node.js项目,在这个项目中,我们正在搜索一堆PHP视图文件,并替换一些属性。 我试图获取HTML打开标记属性值,并替换它们 基本上,如果这是标签 <tag attr1="[capture ANYTHING inside single/double qoutes]" attr2='[CAPTURE ANYTHING]'></tag> 我想捕获属性引号中的任何内容。 我所说的[任何东西]其实是指任何东西 示例2:attr=“with HTML也被

我正在处理一个Node.js项目,在这个项目中,我们正在搜索一堆PHP视图文件,并替换一些属性。 我试图获取HTML打开标记属性值,并替换它们

基本上,如果这是标签

<tag attr1="[capture ANYTHING inside single/double qoutes]" attr2='[CAPTURE ANYTHING]'></tag>  

我想捕获属性引号中的任何内容。 我所说的
[任何东西]
其实是指任何东西

示例2
attr=“with HTML
也被捕获”

示例3
attr=“带换行符样式\n或\n\r\n
这仍然是应该捕获的内容的一部分
还有这一行!“

示例4
attr=“也应该捕获PHP代码!”

example5
title=“{{angular'(如果在属性中):'它也应该是acpture'}}”

我写了下一个正则表达式:


/我看不出一个正则表达式匹配怎么可能做到这一点。据我所知,您无法使用反向引用端匹配多个sub模式

相反,我建议分两步处理HTML。首先,使用

/<\w+\s+[\w-]+=("|')(?:.|[\r\n])*?\1\s+.*?>/g
此时,可以在第一个“=”上拆分,以将每个属性与其值分开


您的示例文本应该按照您想要的方式进行解析。

我不知道如何使用单个正则表达式匹配来实现这一点。据我所知,您无法使用反向引用端匹配多个sub模式

相反,我建议分两步处理HTML。首先,使用

/<\w+\s+[\w-]+=("|')(?:.|[\r\n])*?\1\s+.*?>/g
此时,可以在第一个“=”上拆分,以将每个属性与其值分开


您的示例文本应该按照您想要的方式进行解析。

(:?
是一个非捕获组?
\w
将匹配
@torazaburo中的
请在正则表达式编辑器中运行它,您将看到您的注释是错误的,您可以在这里看到:您指的是哪条注释?我不需要使用正则表达式编辑器来知道
(:?
不是非捕获组;它是以可选的
开头的组。您可能是指
(?:
。这可能是您的regexp未捕获多个属性的原因。您的结束引号在哪里?既然您(正在尝试),那么
\2
应该引用什么不捕获包含引号的组,对吗?根据定义,反向引用不适用于非捕获组。它只适用于您,因为您将非捕获组错误地写入
(:?
,正如我一小时前所说,它不是一个非捕获组,而是一个以可选冒号开头的捕获组。如果您非常喜欢regexp编辑器,请仔细查看他们对您的
(:?
结构的叙述性描述。
(:?
是一个非捕获组?
\w
将匹配
@torazaburo中的
请在正则表达式编辑器中运行它,您将看到您的注释是错误的,您可以在这里看到:您指的是哪条注释?我不需要使用正则表达式编辑器来知道
(:?
不是非捕获组;它是以可选的
开头的组。您可能是指
(?:
。这可能是您的regexp未捕获多个属性的原因。您的结束引号在哪里?既然您(正在尝试),那么
\2
应该引用什么不捕获包含引号的组,对吗?根据定义,反向引用不适用于非捕获组。它只适用于您,因为您将非捕获组错误地写入
(:?
,正如我一小时前所说,它不是一个非捕获组,而是一个以可选冒号开头的捕获组。如果您非常喜欢regexp编辑器,请仔细查看他们对您的
(:?
结构的叙述性描述。