Javascript 单星号(*)和字母数字的正则表达式
我需要一个javascript正则表达式,它可以接受任何字母数字字符(可以是任意数量的字符,如果有星号,则可以是0个字符)和字符串中任何位置的单个星号(但它不需要星号) 匹配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*]?)+$ 但是它匹配多个星号,我不确定如何只允许一个星号。您可以使用带有负前瞻
*
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]+)$
是的,就是这个,谢谢!我会在几分钟内把它标记为答案:)你能解决这个问题吗