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


当前回答

似乎许多用户已经注意到,除非我们严格使用英语,否则这些正则表达式几乎肯定会失败。但我认为有一种不受限制的简单方法。

复制你的字符串在所有大写 用小写字母复制一份

在这些字符串中匹配的任何字符本质上肯定不是字母。

let copy1 = originalString.toUpperCase();
let copy2 = originalString.toLowerCase();
for(let i=0; i<originalString.length; i++) {
    let bIsAlphabetic = (copy1[i] != copy2[i]);
}

此外,您还可以通过查找数字0到9来检测数字。

其他回答

扩展字符串原型以便在整个项目中使用

    String.prototype.alphaNumeric = function() {
        return this.replace(/[^a-z0-9]/gi,'');
    }

用法:

    "I don't know what to say?".alphaNumeric();
    //Idontknowwhattosay

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

^\w+$

解释:

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

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

如果你想返回一个替换的结果,那么这将工作:

var a = 'Test123*** TEST'; Var b = a.replace(/[^a-z0-9]/gi, "); console.log (b);

这将返回:

Test123TEST

请注意,gi是必要的,因为它意味着全局(不仅仅是在第一次匹配时),并且不区分大小写,这就是为什么我使用a-z而不是a-zA-Z。括号内的^表示“括号外的任何东西”。

警告:字母数字是最好的,如果这正是你想要的。但如果你在国际市场上使用它,比如一个人的名字或地理区域,那么你需要考虑unicode字符,这是不需要的。例如,如果您有一个像“Âlvarö”这样的名称,它将使其成为“lvar”。

只接受数字和字母(无空格)

函数onlyAlphanumeric (str) { str.value = str.value。replace(/\s/g, "") str.value = str.value。replace(/[^a-zA-Z0-9]/g, ""); } <div>只接受数字和字母</div> <input type="text" onKeyUp=" onlyalphannumeric (this);">

同样,如果你只是寻找字母字符,你可以使用下面的正则表达式:

/[^a-zA-Z]/gi 

typescript中的示例代码:

let samplestring = "!#!&34!# Alphabet !!535!!! is safe"

let regex = new RegExp(/[^a-zA-Z]/gi);
    let res = samplestring.replace(regex,'');

    console.log(res);

注意:如果您对RegEx语法感到好奇,请访问regexr并使用小抄或使用正则表达式。

编辑:字母数字->字母