我想检查,如果给定的字符串是这种格式:
\w
字符的子字符串可以由
,-
或.
分隔(不是开始或结束)。并且可以有超过2个分隔符。例如weerwer
,as-sas.a
有效。 -assa
,a-s a-s
,asd@d
不是。为此,我使用^\w+([ .-]\w+){0,2}$
。似乎工作。asd
,asd-asd
有效。 asd-asd-asd
不是。这是我的问题。怎么做?/
分隔。例如asd-asd/asd.asd/asdasd/asd asd/aaaaaa
有效。与1中几乎相同的模式,但不限于分隔符的数量。我把它放在这里,以防2.依赖它。答案 0 :(得分:0)
要在此处关闭它,我将根据@ sareed的评论发布解决方案。谢谢。
我换了一些东西......
1. \w
已更改为字母和十进制数字。还添加了_
分隔符。
2.上面的子串长度限制为16。
3. /
分隔符的数量限制为6。
图案:
\A(?=.{1,16}(\z|/))(((\p{Alphabetic}|\p{Numeric_Type=Decimal})+)([\. _-]((\p{Alphabetic}|\p{Numeric_Type=Decimal})+)){0,2})(/(?=.{1,16}(\z|/))(((\p{Alphabetic}|\p{Numeric_Type=Decimal})+)([\. _-]((\p{Alphabetic}|\p{Numeric_Type=Decimal})+)){0,2})){0,6}\z
答案 1 :(得分:0)
它不漂亮但应该有效:
/^((?=[^/]{1,8}(\/|$))\w+([ .\-]\w+)*)(\/(?=[^/]{1,8}(\/|$))\w+([ .\-]\w+)*)*$/