Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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正则表达式查找两个单词之间的所有逗号_Javascript_Regex - Fatal编程技术网

Javascript正则表达式查找两个单词之间的所有逗号

Javascript正则表达式查找两个单词之间的所有逗号,javascript,regex,Javascript,Regex,我试图找到两个单词之间的所有逗号,并用JS中的另一个字符串替换它们。 我尝试过我找到的每一个解决方案,但都失败了 我有这个HTML片段(这只是一个看起来像HTML的字符串,而不是一个 真实html文档) a、 span{color:#29728D;文本装饰:下划线;} a:悬停{颜色:#69621C;文本装饰:下划线;} 正文,td{字体大小:9pt;颜色:#333333} 红、白、蓝 现在我要做的是用“逗号”之类的随机词替换样式标记中的逗号。 但不替换p中的逗号或任何其他标记 我得到的最接

我试图找到两个单词之间的所有逗号,并用JS中的另一个字符串替换它们。 我尝试过我找到的每一个解决方案,但都失败了

我有这个HTML片段(这只是一个看起来像HTML的字符串,而不是一个 真实html文档)


a、 span{color:#29728D;文本装饰:下划线;}
a:悬停{颜色:#69621C;文本装饰:下划线;}
正文,td{字体大小:9pt;颜色:#333333}
红、白、蓝

现在我要做的是用“逗号”之类的随机词替换样式标记中的逗号。
但不替换p中的逗号或任何其他标记

我得到的最接近的结果是
(?\w)*),+(?=\w |\w())

但没有起作用


任何帮助都将不胜感激。

如果您使用DOM访问,您可以更改内容

const片段=`
a、 span{color:#29728D;文本装饰:下划线;}
a:悬停{颜色:#69621C;文本装饰:下划线;}
正文,td{字体大小:9pt;颜色:#333333}
红、白、蓝`
const domSnippet=document.createElement(“x”);
domsippet.innerHTML=snippet;
const st=domSnippet.querySelector(“样式”).textContent;
domsippet.querySelector(“style”).textContent=st.replace(/,/g,”;)
log(domsippet.innerHTML)

a、 span{color:#29728D;文本装饰:下划线;}
a:悬停{颜色:#69621C;文本装饰:下划线;}
正文,td{字体大小:9pt;颜色:#333333}

红色、白色、蓝色

如果使用DOM访问,则可以更改内容

const片段=`
a、 span{color:#29728D;文本装饰:下划线;}
a:悬停{颜色:#69621C;文本装饰:下划线;}
正文,td{字体大小:9pt;颜色:#333333}
红、白、蓝`
const domSnippet=document.createElement(“x”);
domsippet.innerHTML=snippet;
const st=domSnippet.querySelector(“样式”).textContent;
domsippet.querySelector(“style”).textContent=st.replace(/,/g,”;)
log(domsippet.innerHTML)

a、 span{color:#29728D;文本装饰:下划线;}
a:悬停{颜色:#69621C;文本装饰:下划线;}
正文,td{字体大小:9pt;颜色:#333333}

红色、白色、蓝色

如果我理解正确,您希望修改该字符串中的css选择器。 您可以做的是将字符串解析为HTML,获取
元素,修改其CSS规则(特别是
selectorText
),然后从所有修改的规则中构建一个字符串,并将其设置为
元素的新HTML内容

以下是一个例子:

const content=`
a、 span{color:#29728D;文本装饰:下划线;}
a:悬停{颜色:#69621C;文本装饰:下划线;}
正文,td{字体大小:9pt;颜色:#333333}
红、白、蓝`
const doc=new DOMParser().parseFromString(内容为'text/html');
const style=doc.querySelector('style');
const result=[…style.sheet.cssRules]
.减少((acc,规则)=>{
rule.selectorText=rule.selectorText.replace(/\s*,\s*/g,'逗号');
acc+=rule.cssText+'\n';
返回acc;
},“\n”);
style.innerHTML=结果;
const newContent=doc.head.innerHTML+'\n'+doc.body.innerHTML;

console.log(newContent)如果我理解正确,您希望修改该字符串中的css选择器。 您可以做的是将字符串解析为HTML,获取
元素,修改其CSS规则(特别是
selectorText
),然后从所有修改的规则中构建一个字符串,并将其设置为
元素的新HTML内容

以下是一个例子:

const content=`
a、 span{color:#29728D;文本装饰:下划线;}
a:悬停{颜色:#69621C;文本装饰:下划线;}
正文,td{字体大小:9pt;颜色:#333333}
红、白、蓝`
const doc=new DOMParser().parseFromString(内容为'text/html');
const style=doc.querySelector('style');
const result=[…style.sheet.cssRules]
.减少((acc,规则)=>{
rule.selectorText=rule.selectorText.replace(/\s*,\s*/g,'逗号');
acc+=rule.cssText+'\n';
返回acc;
},“\n”);
style.innerHTML=结果;
const newContent=doc.head.innerHTML+'\n'+doc.body.innerHTML;

console.log(newContent)这里有一个使用纯字符串函数的解决方案。没有正则表达式,没有DOM解析。此方法比使用
DOMParser()
更健壮,因为它可以安全地处理损坏的HTML而不会出错,并且如果需要,它将在浏览器之外工作

const document\u body=`
a、 span{color:#29728D;文本装饰:下划线;}
a:悬停{颜色:#69621C;文本装饰:下划线;}
正文,td{字体大小:9pt;颜色:#333333}
红、白、蓝;
已解析变量,已修改=文档\正文,当前\索引=-1;
while((已解析=getTagContent(已修改,,'',当前索引))!==false){
让tag_contents=modified.substring(parsed.start,parsed.end);
让modified_tag_contents=tag_contents.replace(/,/g,'COMMA');
modified=modified.substring(0,parsed.start)+modified_tag_contents+modified.substring(parsed.end);
当前索引=parsed.end-(修改的标签内容.length-标签内容.length);
}
控制台日志(“原件:+文件正文);
console.log(“modified:+modified”);
函数getTagContent(html\u正文、开始标记、结束标记、开始索引=0){
var start=html\u body.indexOf(开始标记,开始索引);
if(start==-1)返回false;
var end=html\u body.indexOf(end\u标记,start);
if(end==-1)返回false;
返回{
开始:开始+开始标记长度,
结束
};

}
这里有一个使用纯字符串函数的解决方案。没有正则表达式,没有DOM解析。此方法比使用
DOMParser()
更健壮,因为它可以安全地处理损坏的HTML而不会出错,并且如果需要,它将在浏览器之外工作

const document\u body=`
a、 span{color:#29728D;文本装饰:下划线;}
a:悬停{颜色:#69621C;文本装饰:下划线;}
正文,td{字体大小:9pt;颜色:#333333}
红、白、蓝;
已解析变量,已修改=docume
<style>
a,span{color:#29728D;text-decoration: underline;}
a:hover{ color:#69621C;text-decoration: underline;}
body, td{font-size:9pt; color:#333333}
</style>

<p>red, white, blue</p>