正则表达式表示单个星号 (*) 和字母数字



我需要一个JavaScript正则表达式,它接受任何字母数字字符(可以是任意数量的字符,如果存在星号,则可以是0个字符(和字符串中任何地方的单个星号(但它不需要星号(。

比赛

*
abc
*abc
abc*
a*bc

无效匹配项

**
*_abc
*abc*
abc**
**abc

我有

^([A-Za-zd*]?)+$ 

但这匹配多个星号,我不确定如何只允许一个 https://regex101.com/r/a1C9bf/1

您可以将此正则表达式与负面展望一起使用:

/^(?!(?:.**){2})[A-Za-zd*]+$/gm

更新的正则表达式演示

如果输入中有多个*,则负前瞻(?!(?:.**){2})匹配失败。

无需任何预瞻,您可以使用^([da-zA-Z]+|[da-zA-Z]**[da-zA-Z]*)$https://regex101.com/r/xW2IvR/2

你可以做:

^(?=.)[A-Za-zd]**?[A-Za-zd]*$

这将匹配长度至少为一个字符 ((?=.)(、以零个或多个字母数字字符开头、包含可选*并以零个或多个字母数字字符结尾的任何字符串。

您也可以将[A-Za-zd]替换为[^W_],使其更短一些(但更难阅读(:

^(?=.)[^W_]**?[^W_]*$

您希望一种匹配两种可能的情况之一:

  1. 由零个或多个字母数字字符包围的星号
  2. 一个或多个字母数字字符

那么这是你的正则表达式:

^([a-zA-Zd]**[a-zA-Zd]*|[a-zA-Zd]+)$

最新更新