JavaScript RegEX显式字符仅匹配一次

时间:2017-10-16 15:36:19

标签: javascript regex

我需要一个具有以下约束的正则表达式:

  1. 仅包含[A-Z0-9.*]个字符

  2. 长度为1到15个字符

  3. 必须包含*,但只能包含一次。

  4. 因此,以下断言:

    • ABC.123 无效(无星星)
    • ABC.123 * 有效(明星结尾)
    • * ABC.123 有效(开头的明星)
    • ABC。* 123 有效(中间的明星)
    • * ABC.123 * 无效(超过一颗星)

    我的目标是只有一个表达式。我显然可以有一个表达式断言前两个约束:[A-Z0-9.*]{1,15}然后第二个表达式断言第三个约束\*{1}

    是否可以使用一个表达式来实质上验证字符串输入的整体结构,然后用另一个表达式重新排列并重新计算字符串?

1 个答案:

答案 0 :(得分:6)

使用前瞻,您可以使用此正则表达式:

^(?=.{1,15}$)[A-Z0-9.]*\*[A-Z0-9.]*$

RegEx Demo

RegEx分手:

  • ^:开始
  • (?=.{1,15}$):肯定要断言输入中有1到15个字符
  • [A-Z0-9.]*:匹配零个或多个[A-Z0-9.]个字符
  • \*:按字面顺序匹配星号
  • [A-Z0-9.]*:匹配零个或多个[A-Z0-9.]个字符
  • $:结束