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


当前回答

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

/[^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并使用小抄或使用正则表达式。

编辑:字母数字->字母

其他回答

对于多语言支持:

var filtered = 'Hello Привет 你好 123_456'.match(/[\p{L}\p{N}\s]/gu).join('')
console.log(filtered) // --> "Hello Привет 你好 123456"

这可以匹配大多数语言中的任何字母、数字或空格。

[…->匹配条件 [ab] ->匹配'a'或'b' \p{L} ->匹配任意语言中的任意字母 \p{N} ->匹配任意语言的任意数字 \s ->匹配空格 第一场比赛后不要停止 /u ->支持unicode模式匹配

裁判:https://javascript.info/regexp-unicode

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

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”。

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

/[^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/

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

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

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

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

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

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

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

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

甚至比Gayan Dissanayake指出的还要好。

/^[-\w\s]+$/

现在^[a-zA-Z0-9]+$可以表示为^\w+$

你可能想用\s代替空格。注意,\s负责空格,而不仅仅是一个空格字符。