Groovy : 用于匹配字母数字和下划线和破折号的正则表达式
Groovy : RegEx for matching Alphanumeric and underscore and dashes
我正在开发 Grails 1.3.6 应用程序。我需要使用正则表达式来查找匹配的字符串。
它需要查找字符串是否包含除字母数字字符或“-”、“_”或“*”以外的任何内容
示例字符串如下所示:
SDD884MMKG_JJGH1222
到目前为止我想到的是,
String regEx = "^[a-zA-Z0-9*-_]+$"
上面的问题是它不在字符串的末尾或开头搜索特殊字符。
我必须在“$”前加一个“\”,否则编译会报错。
- Groovy:illegal string body character after dollar sign;
任何人都可以建议在 Groovy/Grails 中使用更好的正则表达式吗?
问题是字符 class 中间的未转义连字符。使用以下方法修复它:
String regEx = "^[a-zA-Z0-9*_-]+$";
或更短:
String regEx = "^[\w*-]+$";
通过在字符 class 中间放置一个未转义的 -
,您的正则表达式使其表现得像 *
(ASCII 42) 和 _
( ASCII 95), 匹配此范围内的所有内容。
在 Groovy 中,字符串中的 $
字符用于处理替换(例如 Hello ${name}
)。由于这些所谓的 GString
仅被处理,如果字符串是用 "
-chars 围绕它编写的,则您必须进行额外的转义。
Groovy 还允许通过用 '
(单引号)包围它们来编写没有该功能的字符串。然而,获得正则表达式的最简单方法是使用 /
.
的语法
assert "SDD884MMKG_JJGH1222" ==~ /^[a-zA-Z0-9*-_]+$/
进一步 "shortcuts" 参见 Regular Expressions。
@anubhava 的其他观点仍然有效!
逆向更容易:
String regEx = "^[^a-zA-Z0-9\*\-\_]+$" /* This matches everything _but_ alnum and *-_ */
我正在开发 Grails 1.3.6 应用程序。我需要使用正则表达式来查找匹配的字符串。
它需要查找字符串是否包含除字母数字字符或“-”、“_”或“*”以外的任何内容
示例字符串如下所示:
SDD884MMKG_JJGH1222
到目前为止我想到的是,
String regEx = "^[a-zA-Z0-9*-_]+$"
上面的问题是它不在字符串的末尾或开头搜索特殊字符。
我必须在“$”前加一个“\”,否则编译会报错。
- Groovy:illegal string body character after dollar sign;
任何人都可以建议在 Groovy/Grails 中使用更好的正则表达式吗?
问题是字符 class 中间的未转义连字符。使用以下方法修复它:
String regEx = "^[a-zA-Z0-9*_-]+$";
或更短:
String regEx = "^[\w*-]+$";
通过在字符 class 中间放置一个未转义的 -
,您的正则表达式使其表现得像 *
(ASCII 42) 和 _
( ASCII 95), 匹配此范围内的所有内容。
在 Groovy 中,字符串中的 $
字符用于处理替换(例如 Hello ${name}
)。由于这些所谓的 GString
仅被处理,如果字符串是用 "
-chars 围绕它编写的,则您必须进行额外的转义。
Groovy 还允许通过用 '
(单引号)包围它们来编写没有该功能的字符串。然而,获得正则表达式的最简单方法是使用 /
.
assert "SDD884MMKG_JJGH1222" ==~ /^[a-zA-Z0-9*-_]+$/
进一步 "shortcuts" 参见 Regular Expressions。
@anubhava 的其他观点仍然有效!
逆向更容易:
String regEx = "^[^a-zA-Z0-9\*\-\_]+$" /* This matches everything _but_ alnum and *-_ */