2011-07-13 67 views

回答

13

正則表達式的解決辦法是:

var rx = /(^@|,$)/; 
 
console.log(rx.test("")); // false 
 
console.log(rx.test("aaa")); // false 
 
console.log(rx.test("@aa")); // true 
 
console.log(rx.test("aa,")); // true 
 
console.log(rx.test("@a,")); // true

但爲什麼不乾脆用字符串函數來獲得第一和/或最後一個字符:

var strings = [ 
 
    "", 
 
    "aaa", 
 
    "@aa", 
 
    "aa,", 
 
    "@a," 
 
]; 
 
for (var i = 0; i < strings.length; i++) { 
 
    var string = strings[i], 
 
    result = string.length > 0 && (string.charAt(0) == "@" || string.slice(-1) == ","); 
 
    console.log(string, result); 
 
}

+0

謝謝。清潔和描述性。 –

10

對於任何以@開頭或以逗號結尾的字符串,正則表達式應該是這樣的:

/^@|,$/ 

還是你,可能只是這樣做:

if ((str.charAt(0) == "@") || (str.charAt(str.length - 1) == ",")) { 
    // string matched 
} 
+0

謝謝。我不知道我爲什麼要寫一個+來代替| –

+2

'/^@ |,$ /'也可以。 –

+1

+1對於顯而易見的no-regex解決方案 – kapa

1
'@test'.match(/^@.*[^,]$|^[^@].*,$/) // @test 
'@test,'.match(/^@.*[^,]$|^[^@].*,$/) // null 
'test,'.match(/^@.*[^,]$|^[^@].*,$/) // test, 
'test'.match(/^@.*[^,]$|^[^@].*,$/) // null 
+0

+1是唯一解決問題中「或 - 或」條件的人。 –

相關問題