如何屏蔽Ruby正则表达式中连字符未转义的警告?
解决正则表达式中连字符引发的警告问题
嘿,这个警告我太熟了!本质是正则引擎拿不准你字符类里的那个-到底是要当普通连字符,还是用来定义字符范围的(比如a-z这种)——毕竟你把它放在了字符类的中间位置,这就给引擎留了歧义空间,所以才弹出警告。
有两种简单的办法能彻底解决这个警告:
把连字符移到字符类的开头或结尾
正则引擎有个默认规则:只要-出现在字符类的最开头或者最末尾,就会被当成普通字符,不会触发范围解析逻辑。比如把你的正则改成这样:/[^a-zA-Z0-9_\.-]/这里把
-移到了最后,引擎就明确知道这是个普通连字符了。给连字符加转义符
如果你不想调整字符的顺序,直接给-前面加个反斜杠\转义,明确告诉引擎“这就是个普通字符,别把我当范围符”,修改后的正则是:/[^a-zA-Z0-9\-_\.]/
两种方法都能完美屏蔽那个警告,选哪种全看你自己的编码习惯~
内容的提问来源于stack exchange,提问作者bevanb
相关产品推荐
相关产品推荐

