如何使用正则表达式检查一个字符串的开头是否是 [
,结尾是否是 ]
?
我想检查这个字符串是否可以被 JSON.parse
使用。
/^\[.*\]$/
是我想到的,但好像并不起作用。
\A [\w\z]
模式匹配字符串的开头,然后是1个字符:可以是单词字符(字母/数字/下划线)或者一个 z
(因为 \z
在字符类内被视为 z
,而不是锚点)。 - Wiktor Stribiżewif self.text =~ /\A\[.*\]\z/m { }
。 - Wiktor Stribiżewstring = "[foo..bar]"
str = string.strip
str[0] == "[" && str[-1] == "]"
由于方括号[]
用于创建正则表达式列表,因此您必须对它们进行转义:
/\A\[.*\]\z/
\w
将会匹配在[ ]
之间的任意数量的字符,对吗? - The Nomad\z
(表示字符串结尾)需要放在结束括号后面,而且 .
如果没有 /m
标志是无法匹配换行符的,就像 Wiktor 的回答一样。 - Henrik N/\A\[.*\z\]/
是一个永远不会匹配的正则表达式的例子 :) - Wiktor Stribiżew
/\A\[.*\]\z/m
来检查任何字符串是否以[
开头并以]
结尾。 - Wiktor Stribiżewbegin; JSON.parse(my_string); rescue JSON::ParserError; false; else; true; end
。或者如果您喜欢简短和神秘的方式:JSON.parse(my_string) && true rescue false
。不过在您的实际用例中,也许您想要对解析后的JSON执行一些有用的操作,而不是返回一个布尔值。 - Henrik N