3

我正在尝试编写一个正则表达式,它将用下划线(在 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。

4

1 回答 1

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

请注意,因为\wis [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_$].

有关更多信息,请参阅正则表达式教程

于 2013-11-05T05:13:04.690 回答