我有一些字符串,我必须检查它是否由正则表达式中的所有特殊字符组成我尝试了一些东西,但它不按我想要的方式工作?
str = "@#%^"
regex = /[\?\<\>\'\,\?\[\]\}\{\=\-\)\(\*\&\^\%\$\#\`\~\{\}\@]/
str.match(regex)
答案 0 :(得分:3)
你可以用
完成/\A\W*\z/
\W*
匹配从字符串开头(\A
)到结尾(\z
)的任何非单词字符。
请参阅demo:
class String
def onlySpecialChars?
!!self.match(/\A\W*\z/)
end
end
puts "@#%^".onlySpecialChars? # true
puts "w@#%^".onlySpecialChars? # false
如果您有自己的一组特殊字符,请使用而不是\W
。还要注意你已经超出了你的正则表达式,[?<>',?\[\]}{=)(*&^%$#`~{}@-]
就足够了。