我正在尋找一個正則表達式,它需要字母和數字字符(不只是數字或只是字母),是一個特定的長度。正則表達式 - 長度限制和字母數字
我知道這可以通過使用兩個正則表達式或其他程序代碼來檢查長度,但我想知道是否有可能只是使用一個正則表達式。
這樣可以捕獲但不受長度的限制。
([0-9]+[a-z]+|[a-z]+[0-9]+)[0-9a-z]*
這不幸的是不起作用
(([0-9]+[a-z]+|[a-z]+[0-9]+)[0-9a-z]){10}
我正在尋找一個正則表達式,它需要字母和數字字符(不只是數字或只是字母),是一個特定的長度。正則表達式 - 長度限制和字母數字
我知道這可以通過使用兩個正則表達式或其他程序代碼來檢查長度,但我想知道是否有可能只是使用一個正則表達式。
這樣可以捕獲但不受長度的限制。
([0-9]+[a-z]+|[a-z]+[0-9]+)[0-9a-z]*
這不幸的是不起作用
(([0-9]+[a-z]+|[a-z]+[0-9]+)[0-9a-z]){10}
你可以使用正前瞻?=
驗證字母和數字的存在和捕捉使用限制{10}
^(?=.*\d)(?=.*[a-zA-Z])([a-zA-Z\d]{10}$)
演示
const regex = /^(?=.*\d)(?=.*[a-zA-Z])([a-zA-Z\d]{10}$)/;
console.log(regex.test('abcdefghi9'));
console.log(regex.test('211212jknN'));
console.log(regex.test('211212jknnd')); // extra length
console.log(regex.test('2121212122')); // no alphabets
console.log(regex.test('csdcdcdcdc')); // no digits
更新:要查找單行所有比賽使用
\b(?=[a-zA-Z]+\d|\d+[a-zA-Z])[a-zA-Z\d]{10}\b
(?=[a-zA-Z]+\d
:一個或多個a-zA-Z
和一個數字
|\d+[a-zA-Z])
:或一個或多個數字和一個a-zA-Z
演示
const regex = /\b(?=[a-zA-Z]+\d|\d+[a-zA-Z])[a-zA-Z\d]{10}\b/g;
const str = 'sasas12212 aaaaaaaaaa 211212jknn 211212jknnd 2121212122 csdcdcdcd1 csdcdcdc12';
console.log(str.match(regex));
我剩下的問題是 - 我沒有在我的問題中澄清 - 當文本字符串包含許多其他字或空格。例如'regex.test('abcdefghij 1234')'增加空格會得到一個匹配。 (省略'^'和'$') –
通過[demo](https://regex101.com/r/vfhqEO/1)澄清字符串不是多行且包含空格 –
@ F.Rakes嘗試更新 –
嘗試這樣的事情。這種情況下,長度爲3
^(?=.{3,3}$)[a-zA-Z0-9]*(?:_[a-zA-Z0-9]+)*$
至少相關的,不知道欺騙:。http://stackoverflow.com/a/21456918/3836111 –
有意思,我會檢查出來 –
['^(= * \ d)(?=。* [a-zA-Z])([a-zA-Z \ d] {10} $)'](https://regex101.com/r/xcTWyw/1) –