允许文本字段中的某些字符使用正则表达式

时间:2015-01-08 16:40:01

标签: javascript regex

我已经做了很长时间的研究,如何通过使用正则表达式只允许在文本字段中允许三个特定字符,但我无法解决问题。

我尝试的方法是替换不是+()(空格)或数字的任何字符。

我试过的正则表达式如下:

(^[\+\(\)\s0-9]+)

但不起作用。我不知道自己错了。

我将以上正则表达式理解为:如果字符串包含的字符^不是+()0-9

之间的数字

然后在我的Javascript中执行以下操作:

var $text  =   $('#text_field');

if(0 < $text.length)
{
    $text.on(
        'keyup',
        function(e)
        {
            var $val = $(this).val();

            $val = $val.replace(/(^[\+\(\)\s0-9]+)/, '');

            $(this).val($val);
        }
    );
}

但不幸的是,这不起作用。

有人可以帮帮我吗?

我也尝试了以下内容:

^(^[\+\(\)\s0-9]+)$
(^[\+\(\)\s\d]+)
^(^[\+\(\)\s\d]+)$

但仍然没有工作。

2 个答案:

答案 0 :(得分:2)

您应该将^移动到角色类中。

那是

/[^\d)(+ ]/
  • [^\d)(+ ]否定字符类。匹配班级中任何角色以外的任何角色。

在角色类^之外充当锚,它匹配字符串的开头。一旦它被移入字符类,它就会否定,从而匹配反向。

<强>测试

"asdf123(+123) 1234asdf".replace(/[^\d)(+ ]/g, "");
=> 123(+123) 1234

Regex Demo

答案 1 :(得分:2)

问题是您需要在方括号内放置^。此外,您应该全局运行它,因此replace(/([^\+\(\)\s0-9]+)/g, "")应该可以运行。