我编写了以下代码来匹配我的属性文件中的服务名称: -
service = properties.match(/^com\.google\.([#{serviceName}]+)\.public$/)
当我提供任何serviceName
时,此代码可以正常工作,但如果serviceName
之间有-
则会失败
例如 - common-api
错误:
empty range in char class: /^com\.google\.([common-api]+)\.public$/ (SyntaxError)
任何想法如何从正则表达式评估中逃脱整个字符串?
答案 0 :(得分:4)
您可能需要Regexp.escape
:
service = properties.match(/^com\.google\.(#{Regexp.escape(serviceName)})\.public$/)
此外,您已将serviceName
与[...]+
包含在一起,这意味着[...]
中此字符列表中的多个字符。
E.g。此正则表达式[commonapi]+
接受moconaipimdconn
,或者实际上包含您实际想要捕获的服务名称中某些字符的任何长度字符串。