Javascript 单星号(*)和字母数字的正则表达式

Javascript 单星号(*)和字母数字的正则表达式,javascript,regex,Javascript,Regex,我需要一个javascript正则表达式,它可以接受任何字母数字字符(可以是任意数量的字符,如果有星号,则可以是0个字符)和字符串中任何位置的单个星号(但它不需要星号) 匹配 * abc *abc abc* a*bc ** *_abc *abc* abc** **abc 无效匹配 * abc *abc abc* a*bc ** *_abc *abc* abc** **abc 我有 ^([A-Za-z\d*]?)+$ 但是它匹配多个星号,我不确定如何只允许一个星号。您可以使用带有负前瞻

我需要一个javascript正则表达式,它可以接受任何字母数字字符(可以是任意数量的字符,如果有星号,则可以是0个字符)和字符串中任何位置的单个星号(但它不需要星号)

匹配

*
abc
*abc
abc*
a*bc
**
*_abc
*abc*
abc**
**abc
无效匹配

*
abc
*abc
abc*
a*bc
**
*_abc
*abc*
abc**
**abc
我有

^([A-Za-z\d*]?)+$ 

但是它匹配多个星号,我不确定如何只允许一个星号。您可以使用带有负前瞻的正则表达式:

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

如果输入中有多个
*
,(?!(?:.*\*){2}),则反向前瞻
(?!(?:.*\*)
会导致匹配失败。

您可以执行以下操作:

^(?=.)[A-Za-z\d]*\*?[A-Za-z\d]*$
这将匹配任何长度至少为一个字符(
(?=)
),以零个或多个字母数字字符开头,包含可选的
*
,并以零个或多个字母数字字符结尾的字符串

您还可以将
[A-Za-z\d]
替换为
[^\W\uuz]
,使其略短(但略难阅读):


无需任何前瞻性,您可以使用
^([\da-zA-Z]+|[\da-zA-Z]*\*[\da-zA-Z]*)$

您想要两种可能情况中的一种匹配:

  • 由零个或多个字母数字字符包围的星号
  • 一个或多个字母数字字符
  • 这是你的正则表达式:

    ^([a-zA-Z\d]*\*[a-zA-Z\d]*|[a-zA-Z\d]+)$
    

    是的,就是这个,谢谢!我会在几分钟内把它标记为答案:)你能解决这个问题吗