我需要找到一个只允许字母数字的reg ex。到目前为止,我尝试的每个人都只在字符串是字母数字的情况下工作,意思是既包含字母又包含数字。我只想要一个既允许其中一种,又不要求两者兼得的。


当前回答

使用字符类这个词。下面是等价于a ^[a- za - z0 -9_]+$:

^\w+$

解释:

^字符串的开始 \w任意字符(A-Z, A-Z, 0-9, _)。 $ end of string

如果不想匹配下划线,请使用/[^\w]|_/g。

其他回答

这是可行的

^(?=.*[a-zA-Z])(?=.*[0-9])[a-zA-Z0-9]+$

它只接受字母数字字符单独: 通过的测试用例:

dGgs1s23 - valid
12fUgdf  - valid,
121232   - invalid, 
abchfe   - invalid,
 abd()*  - invalid, 
42232^5$ - invalid

or

你也可以试试这个。这个表达式至少满足一个数字和一个字符,而不满足其他特殊字符

^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$

在angular中可以这样测试:

$scope.str = '12fUgdf';
var pattern = new RegExp('^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$');
$scope.testResult = pattern.test($scope.str);

恰好演示

参考:Angularjs中字母数字的正则表达式

^\s*([0-9a-zA-Z]*)\s*$

或者,如果你想要最少一个字符:

^\s*([0-9a-zA-Z]+)\s*$

方括号表示一组字符。^是输入的开始。$是输入的结束符(或换行符,取决于您的选项)。\s是空格。

前面和后面的空格是可选的。

圆括号是分组操作符,允许您提取所需的信息。

编辑:删除了我的错误使用\w字符集。

将这些代码输入到您的SCRATCHPAD并查看操作。

var str=String("Blah-Blah1_2,oo0.01&zz%kick").replace(/[^\w-]/ig, '');

有点晚了,但这对我有用:

/[^a-z A-Z 0-9]+/g

a-z:从a到z的任意值。

A-Z:从A到Z的任意值(大写)。

0-9: 0 ~ 9之间的任意数字。

它将允许方括号内的任何字符,所以假设你想允许任何其他字符,例如“/”和“#”,正则表达式将是这样的:

/[^a-z A-Z 0-9 / #]+/g

这个网站将帮助你在编码之前测试你的正则表达式。 https://regex101.com/

您可以随意修改和添加任何您想要的内容到括号中。 的问候:)

试试这个…将字段ID替换为#name… a-z(a到z), A-Z(A到Z), 0-9(0至9)

jQuery(document).ready(function($){
    $('#name').keypress(function (e) {
        var regex = new RegExp("^[a-zA-Z0-9\s]+$");
        var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
        if (regex.test(str)) {
            return true;
        }
        e.preventDefault();
        return false;
    });
});