有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JavaScript变量名Regex

我试图编写一个正则表达式,用下划线(Java)替换JavaScript变量名中的所有无效字符

我想做的是:

String jsVarName = "1inva>idName".replaceAll("[a-zA-Z_$][0-9a-zA-Z_$]", "_");

最后是一个名为_inva_idName的变量

我正在努力想办法让第一个角色与其他角色不同

[a-zA-Z_$][0-9a-zA-Z_$]是我想要的字符,但我不知道如何将它们连接到正确的语法中。我知道JS var名称可以是完整的unicode,但我只关心ASCII


共 (1) 个答案

  1. # 1 楼答案

    String jsVarName = "1inva>idName".replaceAll("^[^a-zA-Z_$]|[^0-9a-zA-Z_$]", "_");
    

    请注意,由于\w[a-zA-Z_0-9],因此可以简化:

    String jsVarName = "1inva>idName".replaceAll("^[^a-zA-Z_$]|[^\\w$]", "_")
    

    ^[^a-zA-Z_$]匹配任何不是[a-zA-Z_$]并出现在行首的内容|是或[^0-9a-zA-Z_$]匹配任何不是[0-9a-zA-Z_$]的内容

    有关更多信息,请参见regex tutorial