Groovy:RegEx用于匹配字母数字和下划线和短划线

don*_*y76 3 regex grails groovy

我正在研究Grails 1.3.6应用程序.我需要使用正则表达式来查找匹配的字符串.

它需要查找字符串是否包含除字母数字字符或" - "或"_"或"*"以外的任何字符串

示例字符串如下所示:

SDD884MMKG_JJGH1222
Run Code Online (Sandbox Code Playgroud)

到目前为止我想出的是,

String regEx = "^[a-zA-Z0-9*-_]+\$"
Run Code Online (Sandbox Code Playgroud)

上面的问题是它不会在字符串的结尾或开头搜索特殊字符.

我必须在"$"之前添加一个"\",否则会产生编译错误.

- Groovy:illegal string body character after dollar sign;
Run Code Online (Sandbox Code Playgroud)

任何人都可以建议在Groovy/Grails中使用更好的RegEx吗?

anu*_*ava 5

问题是在字符类中间未转义的连字符.使用以下方法修复它:

String regEx = "^[a-zA-Z0-9*_-]+\$";
Run Code Online (Sandbox Code Playgroud)

甚至更短:

String regEx = "^[\\w*-]+\$";
Run Code Online (Sandbox Code Playgroud)

通过将未转义-的位置放置在字符类的中间,正则表达式使其行为类似于*(ASCII 42)和_(ASCII 95)之间的范围,匹配此范围内的所有内容.