JavaScript变量名称正则表达式

时间:2013-11-05 04:59:45

标签: java regex

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

我想要做的是:

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 个答案:

答案 0 :(得分:4)

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_$]的内容并显示在该行的开头。 |是OR。 [^0-9a-zA-Z_$]匹配任何非[0-9a-zA-Z_$]的内容。

有关详细信息,请参阅regex tutorial