正则表达式中的特定子串长度

时间:2014-12-11 16:22:45

标签: regex

我想检查,如果给定的字符串是这种格式:

  1. \w字符的子字符串可以由-.分隔(不是开始或结束)。并且可以有超过2个分隔符。例如weerweras-sas.a有效。 -assaa-s a-sasd@d不是。为此,我使用^\w+([ .-]\w+){0,2}$。似乎工作。
  2. 整个字符串,与上面的regexp匹配,我想限制为8的长度。例如asdasd-asd有效。 asd-asd-asd不是。这是我的问题。怎么做?
  3. 这只是以防万一,解决方案还取决于我需要的另一个限制。我需要传递上述两个的子串才能被/分隔。例如asd-asd/asd.asd/asdasd/asd asd/aaaaaa有效。与1中几乎相同的模式,但不限于分隔符的数量。我把它放在这里,以防2.依赖它。

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+)*)*$/