2011-06-23 34 views
46

Làm cách nào để sử dụng biểu thức chính quy javascript để kiểm tra chuỗi không khớp với một số từ nhất định?javascript biểu thức chính quy để không khớp với một từ

Ví dụ: tôi muốn một hàm, khi chuyển một chuỗi có chứa abc hoặc def, trả về false.

'abcd' -> sai

'CDEF' -> sai

'BCD' -> đúng

EDIT

Tốt, tôi muốn có một biểu thức chính quy cũng đơn giản như một cái gì đó như, [^ abc], nhưng nó không mang lại kết quả như mong đợi khi tôi cần các chữ cái liên tiếp.

ví dụ: Tôi muốn myregex

if (myregex.test('bcd')) alert('the string does not contain abc or def');

Tuyên bố myregex.test('bcd') được đánh giá để true.

Trả lời

60

Đây là những gì bạn đang tìm kiếm:

^((?!(abc|def)).)*$ 

giải thích được ở đây: Regular expression to match a line that doesn't contain a word?

+3

Tôi xin lỗi, nhưng tôi có thể hỏi tôi đang nhân bản cái nào? – ssgao

+1

Tránh đăng câu trả lời rằng nó phản chiếu câu trả lời khác trong một câu hỏi khác trong cùng một trang ([như vậy]) – Alexander

+2

cảm ơn, nhưng tôi nghĩ nó không hoàn toàn giống nhau, trong đó OP yêu cầu khớp một chuỗi không chứa * * từ và câu trả lời cho một câu hỏi khác là về * một * từ, nhưng tôi đã gắn cờ nó với quản trị viên, xem điều này có giúp ích gì không. – ssgao

1
function test(string) { 
    return ! string.match(/abc|def/); 
} 
+1

'string.match (/ abc | def /) 'có lẽ hiệu quả hơn ở đây – SpliFF

+0

Thật vậy ... cảm ơn. – Flimzy

+0

Hoặc .. 'return! String.match (...' – Kayla

12
if (!s.match(/abc|def/g)) { 
    alert("match"); 
} 
else { 
    alert("no match"); 
} 
+1

Tại sao bạn lại chụp trong regex? – Flimzy

+0

Điểm tốt! Tôi nghĩ rằng tôi nghĩ rằng nếu tôi không nắm bắt nó có thể có nghĩa là ab (c | d) ef. –

0
function doesNotContainAbcOrDef(x) { 
    return (x.match('abc') || x.match('def')) === null; 
} 
3

Dưới đây là một giải pháp làm sạch:

function test(str){ 
    //Note: should be /(abc)|(def)/i if you want it case insensitive 
    var pattern = /(abc)|(def)/; 
    return !str.match(pattern); 
} 
0

Điều này có thể được thực hiện theo 2 cách:

if (str.match(/abc|def/)) { 
         ... 
        } 


if (/abc|def/.test(str)) { 
         .... 
        } 
Các vấn đề liên quan