【问题标题】:Regular Expression With String Contain Digit With WildCard/Min,MaxLength In Javascript带有字符串的正则表达式包含带有通配符/最小值的数字,Javascript中的MaxLength
【发布时间】:2013-08-26 22:50:07
【问题描述】:

我是 JavaScript 正则表达式的新手。目前我正在尝试在可能包含数字的字符串上创建一个正则表达式。

场景如下:

字符串可能包含* 之前或之后或两者但不能在中间。

字符串长度最少为 2 个字符,最多为 12 个字符(不包括 *)。

输入字符串示例:

AB1542378522
AC6546457869
OA6546457869

其他有效的字符串是:

*154*
*C6*
AB*
AB154237*
*2378522
*C654645
*645
*AB*
*AC6546457869*
OA*

无效字符串:

*15*4
*15*4*
*A*B15*42*37*

仅支持* 通配符,不允许输入其他特殊字符。例如在上面的输入字符串中ABACOA是有效的前两个字符,但不是AAAXOS...那么它将最多跟随10位数字。

我无法创建涵盖上述用例的正则表达式。 if else 分支使我的代码筋疲力尽。如果我找到任何答案,我会在评论中发布。如有任何混淆,请发表评论。

【问题讨论】:

    标签: javascript regex string


    【解决方案1】:

    尝试使用这种模式:

    /^\*?(?=[^*]{2})[A-Z]{0,2}[0-9]{0,10}\*?$/
    

    模式解释:

    ^           begining of the string
    \*?         optional * 
    (?=[^*]{2}) check if at least 2 characters that are not * follows
    [A-Z]{0,2}  between zero and 2 letters
    [0-9]{0,10} between zero and 10 digits
    \*?         optional *
    $           end of the string
    

    【讨论】:

    • 前瞻,+1。没想到我的
    • 感谢 Casimir et Hippolyte,它就像一个魅力。底层解释也足以根据我的需要进行一些更改。目前我正在阅读正则表达式的 Javascript 圣经,教程非常好,但会你喜欢我喜欢正则表达式的任何书籍或教程吗?谢谢。
    • @RawAliasCoder: regular-expressions.info 是一个很好的网站,可以逐点学习正则表达式的不同特性。
    猜你喜欢
    • 1970-01-01
    • 2021-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-26
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多