繁体   English   中英

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

[英]RegEx for single asterisk (*) and alphanumeric

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

火柴

*
abc
*abc
abc*
a*bc

无效的比赛

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

我有

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

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

您可以将此正则表达式与否定的超前使用:

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

更新了RegEx演示

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

您可以这样做:

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

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

您也可以将[A-Za-z\\d]替换为[^\\W_] ,使其更短(但更难阅读):

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

无需任何前瞻,您可以使用^([\\da-zA-Z]+|[\\da-zA-Z]*\\*[\\da-zA-Z]*)$ https:// regex101。 COM / R / xW2IvR / 2

您想要一种匹配是以下两种可能情况之一:

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

然后这是您的正则表达式:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM