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

Allow certain characters in text field with regex

本文关键字:字符 文本 许使用 正则表达式 字段      更新时间:2023-09-26

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

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

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

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

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

如果字符串包含+的字符不是()0-9[^'d)(+ ]之间的数字

然后在我的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]+)$

但仍然不起作用。

您应该将^移动到字符类中。

那是

/[^'d)(+ ]/
  • ^ 否定字符类。匹配除类中的字符以外的任何字符。

在字符类外部,replace(/([^'+'(')'s0-9]+)/g, "")充当锚点,它与字符串的开头匹配。一旦它被移动到字符类中,它就会否定,从而匹配相反的情况。

测试

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

正则表达式演示

问题是您需要将CC_14放在方括号内。此外,您应该全局运行它,因此CC_15应该可以工作。