使用 replace() 替换字符串中的字符

Zac*_*ach 3 javascript shopify

我写这个 js 是为了从 select 语句中提取值来构建用户将被发送到的链接。问题是我将它与 Shopify 一起使用,其中产品存储在

/products/handle 
Run Code Online (Sandbox Code Playgroud)

Shopify 使用“-”代替“.” 在链接中。

我尝试了许多不同的方法,将替换函数用于字符的单个实例,将新值存储在不同命名的变量中,并在构建链接时尝试执行替换。

myForm.addEventListener('submit', function(e){
    e.preventDefault();
    var val1 = document.getElementById("shortSide").value;
    var val2 = document.getElementById("longSide").value;
    var val3 = document.getElementById("widthSide").value;
    var hyph = '-';
    if(val1 != "default" && val2 != "default" && val2 != "Long Side" && val3 != "default" && val3 != "Width")
      window.location.href = "/products/" + val1.replace(/\./g,hyph) + "x" + val2.replace(/\./g,hyph) + "x" + val3;
    else
        alert("Fill out everything please!");
}, false)
Run Code Online (Sandbox Code Playgroud)

如果变量包含

var1 = '16.88'
var2 = '25.25'
var3 = '1'
Run Code Online (Sandbox Code Playgroud)

预期的输出将是

/products/16-88x25-25x1
Run Code Online (Sandbox Code Playgroud)

但实际输出是

/products/16.88x25.25x1
Run Code Online (Sandbox Code Playgroud)

DBS*_*DBS 6

. 是正则表达式中的特殊字符(它将匹配除行终止符之外的任何字符),您需要使用反斜杠对其进行转义:

val1.replace(/\./g,hyph) 
Run Code Online (Sandbox Code Playgroud)

例如

val1.replace(/\./g,hyph) 
Run Code Online (Sandbox Code Playgroud)