Javascript 查找正则表达式字符集的第一个匹配项

Javascript 查找正则表达式字符集的第一个匹配项,javascript,regex,character,Javascript,Regex,Character,我在网上找到了许多匹配字符串、特定字符、单词等第一次出现的正则表达式的解决方案,但我还没有找到匹配一组字符的第一次出现的解决方案(或者在我的情况下,不匹配一组字符) e、 g.我有一个字符串,如下所示(在javascript中): 现在,我的问题是,尽管ErrorChar很好地返回了一个不匹配字符的数组,但它给出了所有出现的字符,如下所示: var regTest = /[^A-Za-z0-9.,?()@\[\]\-\/ ]/g; var wrongChar = testString.match

我在网上找到了许多匹配字符串、特定字符、单词等第一次出现的正则表达式的解决方案,但我还没有找到匹配一组字符的第一次出现的解决方案(或者在我的情况下,不匹配一组字符)

e、 g.我有一个字符串,如下所示(在javascript中):

现在,我的问题是,尽管ErrorChar很好地返回了一个不匹配字符的数组,但它给出了所有出现的字符,如下所示:

var regTest = /[^A-Za-z0-9.,?()@\[\]\-\/ ]/g;
var wrongChar = testString.match(regTest);
~,!,#,$,%,^,&,*,_,+,|,},{,",:,>,<,;,\,=,`,~,!,#,$,%,^,&,*,_,+,|,},{,",:,>,<,;,\,=,`,~,!,#,$,%,^,&,*,_,+,|,},{,",:,>,<,;,\,=,`

~,!,#,$,%,^,&,*,,+,|,},{,,:,>,使用
search
方法:

var testString = '~!@#$%^&*()_+|}{POIUYTREWQ":?><asdfghjklm,./;[]\=-0987654321`~!@#$%^&*()_+|}{POIUYTREWQ":?><asdfghjklm,./;[]\=-0987654321`~!@#$%^&*()_+|}{POIUYTREWQ":?><asdfghjklm,./;[]\=-0987654321`';
var regTest = /[^A-Za-z0-9.,?()@\[\]\-\/ ]/g;
var first = testString.search(regTest);

var testString='~!@$%^&*([uu+|}{pouytrewq]:?>若要仅获取一次出现,请将正则表达式设置为非全局

要仅获取每个字符一次,只需从
ErrorChar
结果数组中删除重复字符:

var singleChars = wrongChar.sort().reduce(function(res, x) {
    if (x != res[res.length-1])
         res.push(x);
    return res;
}, []);

第一次出现有什么关系?你没有得到独立结果。谢谢,但它不起作用…它返回我“0”。oops没有注意到额外的注释。但我希望数组中包含不需要的字符,而不是只包含函数提到它找到了什么。谢谢!这是因为你的正则表达式与数组中的字符串匹配第一个字符,不是吗?抱歉,但我不太明白“一次出现”和“每个字符只出现一次”之间的区别。无论如何,将正则表达式设置为非全局只会产生它找到的第一个不需要的字符,而不是每个字符的第一次。感谢您的回复!我从您的回答中得出结论,实际上没有不要给我一次不需要的字符数组?是的,我说的“只出现一次”是指“只找到第一个不需要的字符”。但是,我仍然不明白你说的“第一次得到”是什么意思每一个字符-你只是得到它匹配的地方。就像你在这篇文章的第二点,每个字符只有一个。哦,没关系。它的语义和复杂的东西…我必须补充说,如果浏览器不支持javascript 1.8,这个reduce函数需要额外的代码
var singleChars = wrongChar.sort().reduce(function(res, x) {
    if (x != res[res.length-1])
         res.push(x);
    return res;
}, []);