Javascript 带星号的正则表达式方括号
我有以下案文: 那只敏捷的棕色狐狸跳过了那只懒狗。FCC不得不对网络进行审查,因为它说&$#*@!。有614名学生获得90.0%或以上的成绩 我想找到文本: &$#*@ 我定义了以下正则表达式来查找上述文本:Javascript 带星号的正则表达式方括号,javascript,regex,Javascript,Regex,我有以下案文: 那只敏捷的棕色狐狸跳过了那只懒狗。FCC不得不对网络进行审查,因为它说&$#*@!。有614名学生获得90.0%或以上的成绩 我想找到文本: &$#*@ 我定义了以下正则表达式来查找上述文本: [^0-9a-zA-Z\s.] 它确实可以从上面的文本中找到匹配项,但我希望找到重复出现的匹配项。如果我只是多次输入,它就可以工作了。像这样: [^0-9a-zA-Z\s.][^0-9a-zA-Z\s.][^0-9a-zA-Z\s.][^0-9a-zA-Z\s.][^0-9a-zA-Z\
[^0-9a-zA-Z\s.]
它确实可以从上面的文本中找到匹配项,但我希望找到重复出现的匹配项。如果我只是多次输入,它就可以工作了。像这样:
[^0-9a-zA-Z\s.][^0-9a-zA-Z\s.][^0-9a-zA-Z\s.][^0-9a-zA-Z\s.][^0-9a-zA-Z\s.][^0-9a-zA-Z\s.]
现在我放置一个星号来表示零或更多的事件:
[^0-9a-zA-Z\s.]*
([^0-9a-zA-Z\s.])*
而且他们不工作。但是,当我尝试此操作时(使用/g
修饰符):
我得到了大约155个结果。请参阅此链接:
我如何修改上述代码,以便只匹配
&$#*@代码>?使用+
量词匹配一个或多个出现:
[^0-9a-zA-Z\s.]+
^
见
或者,为了使匹配更精确,您可以使用限制量词{2,}
匹配2个或更多,或者{3,}
匹配3个或更多,等等(请参阅底部的备忘单)
var re=/[^0-9a-zA-Z\s.]+/;
var str='敏捷的棕色狐狸跳过了懒狗。FCC不得不对网络进行审查,因为它说&$#*@!。有614名学生获得90.0%或以上的成绩。”;
如果(m=str.match(re)){
console.log(m[0]);
}
如果您只想获得&$#*@!然后使用这个正则表达式
regex=(&\$#\*@!)
您可以在下面看到结果
本例中的问题是“90.0%”的百分比,是否使用此字符?或者你可以排除它?我更喜欢{2,}
而不是+
,因为你的也会匹配%
-如果它在&$#*@之前,请登录90.0%
代码>@SebastianProske:选择取决于OP,我添加了一整张量词备忘单。
regex=(&\$#\*@!)
var text = 'The quick brown fox jumped over the lazy dog. The FCC had to censor the network for saying &$#*@!. There were 614 instances of students getting 90.0% or above.';
console.log(text.match(/[^A-z0-9\s.]+/g, ''));