/^[a-z0-9]+$/i
^ Start of string
[a-z0-9] a or b or c or ... z or 0 or 1 or ... 9
+ one or more times (change to * to allow empty string)
$ end of string
/i case-insensitive
更新(支持通用字符)
如果您需要此正则表达式支持通用字符,可以在这里找到unicode字符列表。
例如:/^([a-zA-Z0-9\u0600-\u06FF\u0660-\u0669\u06F0-\u06F9 _.-]+)$/
这将支持波斯语。
var a = 'Test123*** TEST';
var b = a.replace(/[^a-z0-9]/gi, '');
console.log(b);
这将返回:
Test123TEST
/[^\p{L}\p{N}]/giu
。使用单词字符类。以下正则表达式等同于 ^[a-zA-Z0-9_]+$
:
^\w+$
解释:
如果不想匹配下划线,请使用/[^\w]|_/g
。
/^([a-zA-Z0-9 _-]+)$/
以上正则表达式允许字符串中包含空格,并限制特殊字符。它仅允许a-z、A-Z、0-9、空格、下划线和破折号。
为了支持多语言:
var filtered = 'Hello Привет 你好 123_456'.match(/[\p{L}\p{N}\s]/gu).join('')
console.log(filtered) // --> "Hello Привет 你好 123456"
这将匹配大多数语言中的任何字母、数字或空格。
[a|b]
匹配 a
或 |
或 b
。不要与 (a|b)
混淆!'ab|cd'.match(/(ab|cd)/gu)
返回 ['ab', 'cd']
,而 'ab|cd'.match(/[ab|cd]/gu)
返回 ['a', 'b', '|', 'c', 'd']
。因此,正确的正则表达式应该是 /[\p{L}\p{N}\s]/gu
(不带 |
)。 - Tino^\s*([0-9a-zA-Z]*)\s*$
或者,如果你想要至少一个字符:
^\s*([0-9a-zA-Z]+)\s*$
方括号表示一组字符。^表示输入的开头,$表示输入的结尾(或换行符,具体取决于您的选项)。\s表示空白字符。
前后的空白字符是可选的。
圆括号是分组运算符,允许您提取所需信息。
编辑:删除了我错误使用的\w字符集。
这将有效运作
^(?=.*[a-zA-Z])(?=.*[0-9])[a-zA-Z0-9]+$
它只接受单独的字母数字字符:
测试用例通过:
dGgs1s23 - valid
12fUgdf - valid,
121232 - invalid,
abchfe - invalid,
abd()* - invalid,
42232^5$ - invalid
或者
您也可以尝试这个表达式。它至少包含一个数字和一个字符,且没有其他特殊字符。
^(?=.*[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);
不需要检查有效的字母数字字符串,您可以通过检查字符串中是否存在任何无效字符来间接实现此目的。通过检查与有效的字母数字字符串补集匹配的任何内容来实现。
/[^a-z\d]/i
这里有一个例子:
var alphanumeric = "someStringHere";
var myRegEx = /[^a-z\d]/i;
var isValid = !(myRegEx.test(alphanumeric));
注意isValid
处的逻辑非运算符,因为我测试的是字符串是否为false,而不是它是否有效。
以下是我做的:
string.replace(/[^a-zA-Z0-9 ,._-]/g, '').split(',').join('-').split(' ').join('-').toLowerCase()
注意,我允许使用,._-
,然后使用split()
和join()
将,
替换为-
,将空格分别替换为-
。
最终得到的结果如下:
samsung-galaxy-a10s-6.2-inch-2gb-32gb-rom-android-9.0-13mp-2mp-8mp-dual-sim-4000mah-4g-lte-smartphone-black-bf19-20
这就是我想要的内容。
可能有更好的解决方案,但这对我来说已经很好了。
String.prototype.alphaNumeric = function() {
return this.replace(/[^a-z0-9]/gi,'');
}
使用方法:
"I don't know what to say?".alphaNumeric();
//Idontknowwhattosay
[^\W_]
,但[a-z0-9]
/i 是一个明显的选择。 (注:此句话在讨论正则表达式的语法选项,其中[\W_]
匹配任何非单词字符或下划线,而[^\W_]
则匹配任何字母数字字符。作者提到[\W_]
作为备选方案,但[a-z0-9]
/i 更为直观易懂,可以作为首选方案。) - Vitim.us/[^\w]|_/g
。 - christo8989