我仅在匹配准确时才尝试捕获字符串。
有效:
/this-is-an-exact-matc
/this-is-also-an-exact-match
/this-is-other-exact-match?d=1
/balbabla
无效:
/this-is-not/fafa/fafa
/dede/ddd/dfsfd
/
你可以只有一个路径级别必须算作有效字符串。我正在尝试:
\/(.*)
...但这也验证了像 /bbalbalb/blablba 这样的真实情况
谢谢
也许是这样:
string =~ %r{\A/[^/]+\z}
要获得您在评论中提出的问题,请尝试以下操作:
string[%r{(?<=\A/)(?=[^/]+\z)([^?]+)}]
def valid?(s)
s.count('/') == 1
end
valid?('/this-is-not/fafa/fafa') # => false
valid?('/balbabla') # => true
更新(根据@CasimiretHippolyte 评论)
def valid?(s)
s.rindex('/') == 0
end
valid?('/this-is-not/fafa/fafa') # => false
valid?('/balbabla') # => true