假设我想捕捉字符串,并遵循条件:
h
,i
,
,!
h
h
和i
必须一起出现(作为hi
)至少一次。因此,接受(预期)可能是:
hi
hi!
hhi !!
h ihi !
不可接受,例如:
ih!
< - becos:no hi
h i
< - becos:no hi
(在一起)!hi
< - becos:未以h
hi! x
< - becos:external character(s)这是我到目前为止所尝试的内容:
var pattern = /^[h]+[i]+[ !]*/i;
pattern.test("hi"); //true <--- expected (correct)
pattern.test("hiiih !"); //true <--- expected (correct)
pattern.test("ihi"); //false <--- expected (correct)
pattern.test(" hi"); //false <--- expected (correct)
pattern.test("hixx"); //true <--- not expected (wrong)
(这意味着(到目前为止)我可以完成我所需要的一切,但不能进行字符限制。)
可能是我的整个REGEX应该纠正为不同的方法。请帮忙。
答案 0 :(得分:4)
这是正则表达式:
^(?=h)[hi !]*hi[hi !]*$
^(?=h)
:字符串的开头必须后跟h
[hi !]*
:只有字符类[hi !]
被列为hi
:在某些时候有“hi”[hi !]*$
:继续使用角色类[hi !]
,直至到达结尾答案 1 :(得分:0)
var pattern = /^h+i+[hi !]*$/i;
模式必须以1或更多'h'开头,然后是1或更多'i',然后可以包含'hi!'以任何数量直到字符串的末尾。
答案 2 :(得分:0)