Regex 我正在寻找一个正则表达式,不允许超过星字符连续

Regex 我正在寻找一个正则表达式,不允许超过星字符连续,regex,Regex,您好,我正在寻找一个正则表达式,它不允许连续写入超过个星号字符,也不允许字符串包含更多的星号字符。 例如: a*g*h* // is allowed ***** // is not allowed * //is not allowed *a //. is allowed 现在我有了这个正则表达式:^([^*]*\*{1,2}[^*]*\*[^*]**\*{1,2}[^*]*\*[^*]+\*{1,2}[^*]*.[^*]$ 有人可以帮我吗?您可以使用带替换的前瞻条件来执行此操作: ^(?

您好,我正在寻找一个正则表达式,它不允许连续写入超过个星号字符,也不允许字符串包含更多的星号字符。 例如:

a*g*h*  // is allowed
***** // is not allowed
* //is not allowed
*a //. is allowed  
现在我有了这个正则表达式:
^([^*]*\*{1,2}[^*]*\*[^*]**\*{1,2}[^*]*\*[^*]+\*{1,2}[^*]*.[^*]$


有人可以帮我吗?

您可以使用带替换的前瞻条件来执行此操作:

^(?!\*$|.*\*\*).*

正则表达式详细信息:

  • ^
    :开始
  • (?!\*$\*.*\*)
    :如果我们在结束之前有
    *
    ,或者在输入之前的任何地方有
    *
    ,则会导致匹配失败的负面前瞻断言
  • *
    :匹配0个或更多字符
您可以使用

^(?!\*+$)[^*]*(?:\*(?!\*)[^*]*)*$
请参阅(其中
[^*]
替换为
[^*\n]
以保持在同一行,因为演示是针对单个多行字符串而不是一组单独的字符串运行的)

详细信息

  • ^
    -字符串的开头
  • (?!\*+$)
    -不
    *
    只允许字符串
  • [^*]*
    -0+字符,而非
    *
  • (?:\*(?!\*)[^*]*)*
    -零次或多次重复
    • \*(?!\*)
      -一个
      *
      后面没有另一个
      *
    • [^*]*
      -0+字符,而非
      *
  • $
    -字符串结束

    • 这是一个有效的正则表达式

      ^(?!\*{2})[^\\\s][^*\\\s]*(?:\*(?!\*)[^*\\\s]*)*$
      
      使用
      ^(?!*$.*\*.*)
      作为负面表情。首先,对你有用吗?如有,请考虑接受。