结合两种正则表达式模式

时间:2017-12-14 11:26:45

标签: javascript jquery

有没有办法将这两种模式结合起来?我想删除空格和非字母数字字符。

这确实有效,重复replace函数似乎效率低下。

var str;
str = $('p').text().replace(/[^a-zA-Z 0-9]+/g, '');
str = str.replace(/\s/g, '');

alert(str);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>What's Happening Here!</p>

示例jsFiddle

3 个答案:

答案 0 :(得分:6)

您可以使用'或'运算符(|)组合它们,如下所示:/[^a-zA-Z 0-9]+|\s/g

var str = $('p').text().replace(/[^a-zA-Z 0-9]+|\s/g, '');
console.log(str);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>What's Happening Here!</p>

答案 1 :(得分:1)

你可以明确只允许数字和字母。这将丢弃任何空格

str = $('p').text().replace(/[^0-9a-zA-Z]/g, '');

https://jsfiddle.net/fjnc8x4g/1/

答案 2 :(得分:0)

ypu也会在最后添加.replace之后再添加

str = $('p').text().replace(/[^a-zA-Z 0-9]+/g, '').replace(/\s/g, '');

var str;
str = $('p').text().replace(/[^a-zA-Z 0-9]+/g, '').replace(/\s/g, '');
alert(str);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
</script>
<p>
  What 's Happening Here!
</p>