ng-pattern regex只查找单个出现的模式

时间:2015-10-19 12:30:38

标签: javascript regex angularjs

我需要将模式匹配为字符串- abcd:23415 - abcd:23 ,后跟冒号(:)和任意数量的整数。这种模式不能重复。

例如, 有效模式 - >

- asda:4535 
- abcd 
- abcdabcd:324 
- abcd:234abcd234 
- abcd:234:abcd:234 

无效模式 - >

((((abcd){0,1}):([0-9].+)){0,1})[^:]

我尝试了以下内容:

struct DOT11_FrameHdr{
                                //  Should Be  Actually
UInt8             frameType;    //      -         -
UInt8             frameFlags;   //      2         2
UInt16            duration;     //      2         2
Mac802Address     destAddr;     //      6         6
Mac802Address     sourceAddr;   //      6         6
Mac802Address     address3;     //      6         6
UInt16            fragId: 4,    //      -         -
                  seqNo: 12 ;   //      2         2
char              FCS[4];       //      4         4
                                //---------------------
                                //     28        28

它不起作用。我需要在ng-pattern中传递它。考虑到默认情况下ng-pattern附加^并在结尾添加$,请建议正确的模式。

2 个答案:

答案 0 :(得分:0)

如果最后的数字是可选的,请尝试/^abcd:\d*$/作为模式。

如果必须使用最后的数字,请尝试/^abcd:\d+$/

一些基本细节:

^开始测试字符串

abcd:与静态字符串片段完全匹配

\d匹配数字

*出现零次或多次

+出现一次或多次

$测试字符串的结尾

答案 1 :(得分:0)

您的正则表达式包含.+子模式,允许在:和非 - :之间的换行符之外的任何一个或多个符号。看起来它不是你需要的。

请注意,您实际上可以将正则表达式(而不仅仅是字符串)传递给ng-pattern

因此,如果您在开头有abcd,那么:后跟一个或多个数字,请使用

ng-pattern="/^abcd:\d+$/"

请参阅regex demo

查看JSFiddle