JavaScript中的正则表达式以匹配通配符

时间:2014-11-25 19:57:31

标签: javascript regex

我正在尝试使用JavaScript中的正则表达式验证用户输入。有效输入至少两个带*符号的字符。换句话说,有效格式是

< '*' or nothing><at least two characters>< '*' or nothing>

有效输入是

Mu*
*pa
*pa*

无效输入

*e*
*e*t
*e*t*
pa**

我正在尝试跟随表达但不能正常工作。

^{\*}?[A-Za-z]{\*}?$

3 个答案:

答案 0 :(得分:2)

定义不明确,但我们假设有效字符串必须具有初始或最终*字符(即,完全没有*的字符串无效)。是否需要最终*取决于是否存在初始*。我怀疑(虽然我没有证明)这意味着你的有效字符串集不能用常规语言来描述。

相反,您的语言可以被描述为两个常规语言的并集:一个字符串以*结束(并且可选地开始),一个字符串以*开始(并且可选地结束) }:

/^\*?\w{2,}\*$|^\*\w{2,}\*?$/

在这里,我们接受

  • 最少两个字母的字符串,其中包含所需的最终*(以及可选的前导*)或
  • 最少两个字母的字符串,其中包含必需的前导*(以及可选的最终*)。

答案 1 :(得分:1)

调整后:^\*?\w{2,}\*?$应该做到这一点 哎呀:刚刚注意到了#34;提示&#34;在@NiettheDarkAbsol评论中 - 这基本上给出了相同的解决方案 但是,我们可能都错了,因为有效序列的所有示例都至少有一个星号。这在“正式”中并不明确。虽然描述......

答案 2 :(得分:1)

不仅仅是这个吗?

/^\*?[a-zA-Z]{2,}\*?$/

http://regex101.com/r/gT3nY4/1