我正在尝试编写一个正则表达式,它将用下划线替换 JavaScript 变量名称中的所有无效字符(在 Java 中)。
我想做的是:
String jsVarName = "1inva>idName".replaceAll("[a-zA-Z_$][0-9a-zA-Z_$]", "_");
Run Code Online (Sandbox Code Playgroud)
并最终得到一个名为 的变量_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_$]", "_");
Run Code Online (Sandbox Code Playgroud)
请注意,由于\w
是[a-zA-Z_0-9]
,因此可以简化:
String jsVarName = "1inva>idName".replaceAll("^[^a-zA-Z_$]|[^\\w$]", "_")
Run Code Online (Sandbox Code Playgroud)
^[^a-zA-Z_$]
匹配任何不是[a-zA-Z_$]
并且出现在行开头的内容。|
是或。[^0-9a-zA-Z_$]
匹配任何不是 的东西[0-9a-zA-Z_$]
。
有关更多信息,请参阅正则表达式教程。
归档时间: |
|
查看次数: |
12623 次 |
最近记录: |