正则表达式忽略特殊字符

时间:2018-03-06 04:48:53

标签: javascript regex

说,我有一个文本存储为:

var val1 = 'l-oreal';

我希望匹配val1这样,它会读取val1并忽略其中的连字符(破折号)。我想要一个忽略文本中特殊字符的正则表达式。这可能吗?

我不想删除文字中的特殊字符。我想忽略它。

3 个答案:

答案 0 :(得分:4)

您可以匹配正则表达式var testString = "any string l-orem"; var matcher = /[a-z]+/gi; var matches = testString.match(matcher); var result = matches.join(''); console.log(result);,然后通过空格或任何其他字符加入:



goOffline()




当然,这并不会改变原来的字符串,可以根据自己的需要进行定制。

答案 1 :(得分:3)

您可以使用^来选择特殊字符,然后将其替换为空字符串'',如下所示:

val1.replace(/([^a-zA-z0-9]+)/g, s0 => ''); // loreal

a-zA-Z-0-9以外的所有内容都将被删除。

更新了以下情景的帖子:

  

字符串必须包含字符abc并忽略任何特殊字符   字符

对于这种方法,你可以利用匹配来知道你的字符串是否在你的正则表达式上有任何匹配。如果是这样,那么你可以使用replace将特殊字符切换为空字符串:

function strChecker(str) {
    var response;
    if(val1.match(/lorem/)) {
       response = val1.replace(/([^a-zA-z0-9]+)/g, s0 => '');
    }
    return response;
}

strChecker('ha-ha?lorem') // returns hahalorem
strChecker('ha-ha?loram') // return undefined

答案 2 :(得分:2)

var val1 = 'l-oreal';
var val2 = val1.replace(/\W/g,'');  // remove any non-alphanumerics

console.log(val1);   // still the same, not changed
console.log(val2);   // only alphanumerics