Regex适用于chrome和其他浏览器,但在safari上返回无效错误



下面的正则表达式在chrome上工作,但在safari中有一个问题,因为它包含一个向后看,这里需要向前看的正确工作,所以有没有其他方法可以解决?

(#[a-zA-Z0-9_(,)]{1,30})+(?<!,)$

我尝试完成的正则表达式是:

  • 如果它应该以#
  • 开头
  • 字符串之间用逗号分隔
  • 字符串不能以"逗号"结尾
  • 在"逗号"之后,如果输入一个新字符串,则散列应该开始
  • 每个字符串的最大限制为30,最小限制为1

它应该接受:

#tag 
#tag_1,#tag2 
#tag1,#tag2,#tag3 

它不应该接受:-

# 
#tag(with more than 30 characters) 
# tag1, 
#tag:///

可以去掉字符类的逗号,并在每次迭代前加上它

如果只需要匹配,捕获组可以是非捕获组。

^#[a-zA-Z0-9_()]{1,30}(?:,#[a-zA-Z0-9_()]{1,30})*$

模式匹配:

  • ^字符串
  • 起始
  • #[a-zA-Z0-9_()]{1,30}匹配1-30次字符类,不含逗号
  • (?:,#[a-zA-Z0-9_()]{1,30})*可选地重复,和1-30次字符类,不带逗号
  • $字符串结束

Regex演示

最新更新