我有一个Java正则表达式:
final String label = "23_fgh99@#";
System.out.println(label.replaceAll("^[^a-zA-Z_][^a-zA-Z0-9_]{1,126}$", "_"));
这意味着:
现在,我想用下划线替换不具有该正则表达式中的字符的字符串。
示例:
23_fgh99@#
但结果仍是_3_fgh99__
。
如何将其“转换”为@Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "custom-editor" } })
@Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })
?
答案 0 :(得分:3)
使用this code:
final String label = "23_fgh99@#";
System.out.println(label.replaceAll("^[^a-zA-Z_]|(?<!^)[^a-zA-Z0-9_]", "_"));
输出_3_fgh99__
。
要删除“不在原始模式中”的内容,您需要取消第一个字符类,并且只检查开头的字符(^[^a-zA-Z_]
),然后检查不是在开头的其他字符否定第二个字符类((?<!^)[^a-zA-Z0-9_]
)。然后,我们只使用交替符号|
在一次替换操作中应用两种模式。