Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式-组合模式_Javascript_Regex - Fatal编程技术网

Javascript 正则表达式-组合模式

Javascript 正则表达式-组合模式,javascript,regex,Javascript,Regex,在javascript中,我想删除所有非字母数字字符。这是我的密码: function (inpt) { return inpt.replace(/[^\w]/gi, "").replace(/_/g, ""); } 这段代码工作100%正确。删除所有非字母数字字符 \w仍然允许下划线,这就是我将两个replace语句链接在一起的原因 然后我尝试像这样组合正则表达式,现在下划线不再被过滤 function (inpt) { return inpt.rep

在javascript中,我想删除所有非字母数字字符。这是我的密码:

function (inpt) {
        return inpt.replace(/[^\w]/gi, "").replace(/_/g, "");
    }
这段代码工作100%正确。删除所有非字母数字字符

\w
仍然允许下划线,这就是我将两个
replace
语句链接在一起的原因

然后我尝试像这样组合正则表达式,现在下划线不再被过滤

function (inpt) {
        return inpt.replace(/[^\w_]/gi, "");     // note:  added _
    }

我做错了什么?

您的
[^\w\uu]
模式表示一个匹配任何字符但不匹配单词(字母、数字或
)和
字符的字符

[^\w]
模式等于
\w
。因此,您可以使用

/[\W_]/g

这里,
[\W\u]
是一个正数,与非单词字符或
匹配

JS演示:

var str=“some%\u 1string*”;

console.log(str.replace(/[\W_]+/g',)改用
[\W\u]
。不需要i标志。它表示“not\w”或“not\uu”@epascarello-谢谢,我希望我能多次投票支持你的评论。(:谢谢。我被“^”弄糊涂了……我想这可能是字符串的开头。如果你将epascarello的评论合并到你的答案中,我可以接受你的答案作为最终答案。@Joe Nie ma za co:)