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

最佳答案

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

关于JavaScript 变量名正则表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19782163/

10-13 06:32