需要编写一个使用Regex的Ruby方法,并为以大写字母开头并以标点符号结尾的字符串返回true

时间:2017-01-12 17:37:11

标签: ruby-on-rails ruby regex match

...并且对于以小写字母开头并以标点符号结尾的字符串返回false。

这样的事情:

def first_word_capitalized_and_ends_with_punctuation?(text)
  !!text.match(/^(A-Z)...$\W/)
end

2 个答案:

答案 0 :(得分:2)

你只需要改变一下正则表达式

def first_word_capitalized_and_ends_with_punctuation?(text)
  !!text.match(/^[A-Z].*\W$/)
end

修改

根据@spickermann的建议,您也可以使用match?

def first_word_capitalized_and_ends_with_punctuation?(text)
  text.match?(/^[A-Z].*\W$/)
end

答案 1 :(得分:0)

您可以使用此正则表达式。它只匹配字符串开头的大写字母,介于两者之间的所有内容以及末尾的标点字符(\. , :;):

^[A-Z].*[\.,:;]$

这里用于你的代码:

def first_word_capitalized_and_ends_with_punctuation?(text)
  !!text.match(/^[A-Z].*[\.,:;]$/)
end

使用\W也会匹配空白字符。