2011-07-13 45 views

Trả lời

13

giải pháp RegEx sẽ là:

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

Nhưng tại sao không chỉ cần sử dụng chức năng chuỗi để có được những ký tự đầu tiên và/hoặc cuối:

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

cảm ơn. Sạch sẽ và mô tả. –

10

Đối với một chuỗi mà một trong hai bắt đầu với @ hoặc kết thúc bằng một dấu phẩy, regex sẽ trông như thế này:

/^@|,$/ 

Hoặc bạn có, chỉ có thể làm điều này:

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

cảm ơn bạn. Tôi không biết tại sao tôi đã viết một + thay cho | –

+2

'/^@ |, $ /' cũng hoạt động tốt. –

+1

+1 cho giải pháp không rõ ràng-regex – kapa

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

+1 là người duy nhất giải quyết tình trạng "hoặc" trong câu hỏi. –

Các vấn đề liên quan