正则表达式检查字符串是否只由特殊字符组成

时间:2015-09-03 11:33:56

标签: ruby-on-rails regex

我有一些字符串,我必须检查它是否由正则表达式中的所有特殊字符组成我尝试了一些东西,但它不按我想要的方式工作?

str = "@#%^"
regex = /[\?\<\>\'\,\?\[\]\}\{\=\-\)\(\*\&\^\%\$\#\`\~\{\}\@]/
str.match(regex)

1 个答案:

答案 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。还要注意你已经超出了你的正则表达式,[?<>',?\[\]}{=)(*&^%$#`~{}@-]就足够了。