否定Javascript正则表达式模式

时间:2017-05-30 08:17:39

标签: javascript html angularjs regex ng-tags-input

我有以下正则表达式:[^\u0001-\u00FF]。有了它,我验证用户输入不包含无效字符,如"€"等等。

var utfRegex: RegExp = new RegExp('[^\u0001-\u00FF]');
return !utfRegex.test(userInput);

现在我使用tags-input组件并需要验证用户输入。所以我需要通过一个正则表达式的正则表达式。

将这个正则表达式转变为最简单的方法是什么?

2 个答案:

答案 0 :(得分:1)

仅允许有效字符:

要确保userInput仅包含有效字符(范围ASCII 0 - 255),请使用正则表达式:

`^[\u0001-\u00FF]+$` 
  • ^$作为开始和结束锚
  • [\u0001-\u00FF]+匹配属于ASCII范围0 - 255的一个或多个字符。

也将!utfRegex.test更改为utfRegex.test

代码:

var utfRegex: RegExp = new RegExp('^[\u0001-\u00FF]+$');
return utfRegex.test(userInput);

仅允许无效字符:

确保输入仅包含无效字符

`^[^\u0001-\u00FF]+$` 
  • ^$作为开始和结束锚
  • [^\u0001-\u00FF]+匹配属于ASCII范围0 - 255的一个或多个字符

也不要忘记将!utfRegex.test更改为utfRegex.test

代码:

var utfRegex: RegExp = new RegExp('^[^\u0001-\u00FF]+$');
return utfRegex.test(userInput);

答案 1 :(得分:0)

您的正则表达式只是将符号格式作为字符串。所以你必须将它们转换为特殊字符。

var str = unescape(encodeURIComponent('(?!\u0001-\u00FF)'));
var utfRegex = new RegExp(str);
var x = utfRegex.test(userInput);

if(x) { // you can add extra condition if you want there should be an input userInput.length > 0
    // no invalid characters
} else {
    // contains invalid characters
}