快速問題:我需要允許輸入只接受字母,從a到z和從A到Z,但找不到任何表達式。我想使用javascript test()方法。javascript正則表達式:只允許英文字母
回答
另一種選擇是使用case-insensitive flag i,那麼不需要額外的字符範圍A-Z。
var reg = /^[a-z]+$/i;
console.log(reg.test("somethingELSE")); //true
console.log("somethingELSE".match(reg)[0]); //"somethingELSE"
下面是關於這個表達式與測試是如何工作的DEMO()和匹配()。
只是爲了澄清,當這個表達式有其他的時候,這個表達式是否會返回null,比如說'&'字符存在?如果只有英文字母,那麼它會返回輸入本身? – MadPhysicist 2016-07-23 16:18:59
@MadPhysicist TLDR;是。說明:如果沒有匹配,使用'string.match(regex)'將返回null,否則返回一個匹配字符串數組。由於這個正則表達式匹配從字符串('^')開頭到字符串末尾(''')的所有內容,所以這裏的match()將返回整個字符串或null。查看我的[DEMO](https://jsfiddle.net/shawn1/ebuno94c/)以獲得'regex.test(string)'或'string.match(regex)'的用法。 – 2016-07-24 00:09:44
@MadPhysicist澄清:匹配()這裏實際上返回一個數組與整個字符串在零索引。 – 2016-07-24 00:25:45
如果你不介意這些特殊字符("[", "\", "]", "^", "_", "`"
),你也可以這樣做:
/^[A-z]+$/.test('string')
var matches = [], special = [];
// Test ASCII characters (0-255)
for (var i=0,n=255; i < n; i++){
var char = String.fromCharCode(i); // get character
if (/[A-z]/.test(char)){
matches.push(char);
if (!/[a-zA-Z]/.test(char))
special.push(char);
}
}
console.log('matches: ', matches);
console.log('special characters: ', special);
發表評論,如果你沒有看到!/[a-zA-Z]/.test(char)
,需要知道誰將來從協助中刪除;)
什麼世界是三年前 – rook 2013-09-11 10:02:44