0

这可能很简单,但我很难做到。考虑以下代码:

var string = 'testingT#$^%#$ESTING__--232'
string = string.match(/^\w*$/)
if (string != null)
{
    string = string.join('')
    string = string.toUpperCase()
}
$('#my-input').val(string)

我想要做的是从 中删除所有不是字母数字或下划线的字符string,然后将该字符串转换为大写。

到目前为止,我这样做了,如果我不添加任何特殊字符,它就可以完美地工作,但是当我添加-或添加^它时,它会删除所有内容#my-input

4

3 回答 3

3

您可以一步完成:

string = string.replace(/[^\w]/g, '').toUpperCase();
console.log(string); //=> "TESTINGTESTING__232"
于 2013-04-01T00:06:13.547 回答
1
var string = string.replace(/[^a-zA-Z_0-9]/g,'').toUpperCase()

另外,你需要unicode吗?我的正则表达式只会匹配 az,而不是 åÉø。

于 2013-04-01T00:06:59.020 回答
1

您需要在正则表达式中使用“全局”标志并删除匹配限制。

var str = 'testingT#$^%#$ESTING__--232';
str = str.match(/\w+/g);    
if (str !== null)
{
    str = str.join('');
    str = str.toUpperCase();
}
$('#my-input').val(str);
于 2013-04-01T00:15:16.527 回答