请帮助我,因为我在编程方面是一个菜鸟。我该怎么做才能让它替换所有的字符串匹配?如果我写/ http://example.com/ad//g而不是" http://example.com/ad/"它也不会正常运行。
<!DOCTYPE html>
<html>
<body>
<h3>Instert your links</h3>
input:<br>
<textarea id="myTextarea">
http://example.com/ad/123.html
http://example.com/ad/345.html
http://example.com/ad/3567.html
</textarea>
<button type="button" onclick="myFunction()">Get clean links</button>
<p id="links"></p>
<script>
function myFunction() {
var x = document.getElementById("myTextarea").value;
var x = x.replace("http://example.com/ad/", "http://example.com/story/");
var x = x.replace("\n","</br>");
document.getElementById("links").innerHTML = x;
}
</script>
</body>
</html>
&#13;
答案 0 :(得分:1)
由于您无法直接向String.prototype.replace
提供全局标志,因此需要将其作为第一个参数传递给RegExp:
x.replace(/\n/g, '</br>')
如果您不关心在替换中使用原始值,则可以继续传递字符串作为第二个参数。
<!DOCTYPE html>
<html>
<body>
<h3>Instert your links</h3>
input:<br>
<textarea id="myTextarea">
http://example.com/ad/123.html
http://example.com/ad/345.html
http://example.com/ad/3567.html
</textarea>
<button type="button" onclick="myFunction()">Get clean links</button>
<p id="links"></p>
<script>
function myFunction() {
var x = document.getElementById("myTextarea").value;
var x = x.replace(/http:\/\/example.com\/ad\//g, "http://example./com/story/");
var x = x.replace(/\n/g,"</br>");
document.getElementById("links").innerHTML = x;
}
</script>
</body>
</html>
答案 1 :(得分:0)
您需要使用带有全局标志的正则表达式:
x = x.replace(/http:\/\/example\.com\/ad\//g, "http://example.com/story/");
x = x.replace(/\n/g,"</br>");
请注意,您需要转义任何特殊字符。
答案 2 :(得分:0)
g
标志应该可以正常工作。尝试使用正则表达式时的问题可能与/
需要在JavaScript正则表达式文字中转义的事实有关。试试这个:
document.getElementById("links").innerHTML = document.getElementById("myTextarea")
.value
.replace(/http:\/\/example\.com\/ad\//g, "http://example.com/story/")
.replace(/\n/g, "<br>");
答案 3 :(得分:0)
@FXML
private void minimizeWindow(MouseEvent event) {
Stage window = (Stage) ((Rectangle) event.getSource()).getScene().getWindow();
this.minButton.setStyle("-fx-fill: blue;");
AnimationTimer timer = new AnimationTimer() {
int count = 2;
@Override
public void handle(long now) {
if (--count <= 0) {
window.setIconified(true);
this.stop();
}
}
};
timer.start();
}
函数只会替换第一次出现:
来自: this link
如果要替换值(而不是正则表达式),则只替换值的第一个实例。要替换所有出现的指定值,请使用global(g)修饰符(请参阅下面的“更多示例”)。
要执行全局替换,您应该在replace
函数的第一个参数中使用正则表达式。在你的情况下:
replace
我希望它可以帮到你!