Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.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,我正在尝试替换以下模式: 原件: <a href="#idvalue">welocme</a> 需要替换为: <a href="javascript:call('idvalue')">welcome</a> 尝试了以下方法: String text = "<a href=\"#idvalue\">welocme</a>"; Pattern linkPattern = Pattern.compile("a href

我正在尝试替换以下模式: 原件:

<a href="#idvalue">welocme</a>

需要替换为:

<a href="javascript:call('idvalue')">welcome</a>

尝试了以下方法:

String text = "<a href=\"#idvalue\">welocme</a>";
Pattern linkPattern = Pattern.compile("a href=\"#");
text =  linkPattern.matcher(text).replaceAll("a href=\"javascript:call()\"");
String text=”“;
Pattern linkPattern=Pattern.compile(“a href=\”#);
text=linkPattern.matcher(text.replaceAll)(“a href=\”javascript:call()\”);
但无法在两者之间添加idvalue。请帮助我。
提前感谢。

尝试获取可能更改的零件,并将其作为一个组保留,例如:

text = text.replaceAll( "href=\"#(.*?)\"", "href=\"javascript:call('$1')" );
这基本上是将捕获组1的
href=“where”
匹配并替换为
where
,并使用
$1
作为组1内容的引用重新插入替换字符串

请注意,将正则表达式应用于HTML和Javascript可能很棘手(允许使用单引号或双引号、注释、嵌套元素等),因此最好使用HTML解析器。

简单的

text.replaceAll("#idvalue","javascript:call('idvalue')")

仅适用于这种情况。如果您希望做更全面的工作,那么正如另一个答案中所建议的,XML解析器将是理想的选择。

将捕获组添加到matcher正则表达式中,然后在replacemet中引用该组。我发现使用时,您需要使用“$”而不是“\”来访问替换中的捕获组。

代码:

String text = "<a href=\"#idvalue\">welcome</a>";
System.out.println("input: " + text);       
Pattern linkPattern = Pattern.compile("a href=\"#([^\"]+)\"");
text =  linkPattern.matcher(text).replaceAll("a href=\"javascript:call('$1')\"");
System.out.println("output: " +text);
String text=”“;
System.out.println(“输入:+文本);
Pattern linkPattern=Pattern.compile(“a href=\”#([^\“]+)\”);
text=linkPattern.matcher(text.replaceAll(“a href=\”javascript:call(“$1”)\”);
System.out.println(“输出:+文本);
结果:

输入:
输出:

也许这是有用的: