Javascript 我的正则表达式在“之前”中查找不必要的字符有什么问题;“无效主管道”;

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]*

必须返回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]*[^\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$