Regex pour vérifier si la chaîne est uniquement composée de caractères spéciaux


Shilpi Agrawal

J'ai des chaînes pour lesquelles je dois vérifier si elle est composée de tous les caractères spéciaux de l'expression régulière J'ai essayé quelque chose mais cela ne fonctionne pas comme je veux de l'aide?

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

Vous pouvez le faire avec

/\A\W*\z/

Le \W*correspond à tout caractère non-mot du début ( \A) à la fin ( \z) de la chaîne.

Voir la démo :

class String
  def onlySpecialChars?
    !!self.match(/\A\W*\z/)
  end
end

puts "@#%^".onlySpecialChars?   # true
puts "w@#%^".onlySpecialChars?  # false

Si vous avez votre propre jeu de caractères spéciaux, utilisez simplement à la place de \W. Notez également que vous avez suréchappé votre regex, [?<>',?\[\]}{=)(*&^%$#`~{}@-]cela suffira.

Articles connexes


Regex pour une chaîne composée uniquement de caractères répétés

Owen J'ai besoin de créer une validation qui détermine si une chaîne est uniquement composée de caractères répétés. Ainsi, par exemple, il attraperait "pp" mais pas "happy". Jusqu'à présent, je peux vérifier le caractère répétitif en utilisant ceci: /(.)\1+/.t