Javascript 我的正则表达式在“之前”中查找不必要的字符有什么问题;“无效主管道”;
必须返回TRUE:Javascript 我的正则表达式在“之前”中查找不必要的字符有什么问题;“无效主管道”;,javascript,regex,Javascript,Regex,必须返回TRUE: kword_search = wvoid main kword_search = a ew void main kword_search = wvoid main kword_search = o void main 必须返回FALSE kword_search = void main kword_search = void main kword_search = void main 到目前为止我所做的: if( /^[^v]*
kword_search = wvoid main
kword_search = a ew void main
kword_search = wvoid main
kword_search = o void main
必须返回FALSE
kword_search = void main
kword_search = void main
kword_search = void main
到目前为止我所做的:
if( /^[^v]*[^\sv][^v]*[void|int]\s+main$/.test(kword_search) ){
alert('found unnecessary char(s) before keyword main');
}
条件将被测试,因为kword_搜索的最后一个单词是“main”,这就是为什么我包括$。我没有进入我的条件。使用此正则表达式,搜索您接受的条件和其他任何错误都要容易得多:
^\s*void\s+main$
像这样使用它:
if( /^\s*void\s+main$/.test(kword_search) == false ){
alert('found unnecessary char(s) before keyword main');
}
你把角色分类和交替混为一谈
[void|int]
匹配这些字符中的一个:d
,i
,n
,o
,t
,v
,
。您需要的是分组:
/^[^v]*[^\sv][^v]*(?:void|int)\s+main$/
请注意,在替换之前,您实际上不需要排除这些字符:
/^.*\S.*(?:void|int)\s+main$/
你可以用
^kword_search =\s{1,}void\s{1,}main
所以对于你的JS来说
if( /^kword_search =\s{1,}void\s{1,}main/.test(kword_search) == false){
alert('found unnecessary char(s) before keyword main');
}
它的工作原理
^
表示行的开头,所以我们从它开始kword\u search=
只需搜索它\s{1,}
表示至少1个空格(或\s
匹配字符),但不超过无穷大void
就是这样,但由于它紧跟在\s
后面,所以前面不能有字符\s{1,}main
与\s{1,}void
相同,但void与main切换。在上述情况下,如何应用该选项?@fireflieslive已更新。我会更新更多来解释发生了什么。可以使用+
来代替{1,}
@JanDvorak不知道这一点。谢谢你提供的信息。是的,但是我需要这样的信息,以便我在后面的比较中没有问题。如何集成void或int?您只需使用一个替代项,而不是void
:^\s*(?:void | int)\s+main$