Biểu thức chính quy (trong JavaScript nếu có vấn đề) chỉ khớp nếu văn bản khớp chính xác là gì? Đó là, không nên có thêm ký tự ở đầu kia của chuỗi.
Ví dụ, nếu tôi đang cố gắng để phù hợp cho abc
, sau đó 1abc1
, 1abc
và abc1
sẽ không khớp.
Biểu thức chính quy (trong JavaScript nếu có vấn đề) chỉ khớp nếu văn bản khớp chính xác là gì? Đó là, không nên có thêm ký tự ở đầu kia của chuỗi.
Ví dụ, nếu tôi đang cố gắng để phù hợp cho abc
, sau đó 1abc1
, 1abc
và abc1
sẽ không khớp.
Câu trả lời:
Sử dụng các dấu phân cách bắt đầu và kết thúc: ^abc$
^abc def ghi$
/^(?:abc|def)$/
hoặc /^(abc|def)$/
. Mặt khác, nếu nhóm không được sử dụng, /^abc|def$/
sẽ khớp abc
ở đầu chuỗi HOẶC def
ở cuối chuỗi.
Nó phụ thuộc. Bạn có thể
string.match(/^abc$/)
Nhưng điều đó sẽ không khớp với chuỗi sau: '3 chữ cái đầu tiên của bảng chữ cái là abc. không abc123 '
Tôi nghĩ bạn sẽ muốn sử dụng \b
(ranh giới từ):
var str = 'the first 3 letters of the alphabet are abc. not abc123';
var pat = /\b(abc)\b/g;
console.log(str.match(pat));
Ví dụ trực tiếp: http://jsfiddle.net/uu5VJ/
Nếu giải pháp trước đây hiệu quả với bạn, tôi sẽ khuyên bạn không nên sử dụng nó.
Điều đó có nghĩa là bạn có thể có một cái gì đó như sau:
var strs = ['abc', 'abc1', 'abc2']
for (var i = 0; i < strs.length; i++) {
if (strs[i] == 'abc') {
//do something
}
else {
//do something else
}
}
Trong khi bạn có thể sử dụng
if (str[i].match(/^abc$/g)) {
//do something
}
Nó sẽ được sử dụng nhiều tài nguyên hơn đáng kể. Đối với tôi, một quy tắc chung là so sánh chuỗi đơn giản sử dụng biểu thức điều kiện, đối với mẫu động hơn sử dụng biểu thức chính quy.
Thông tin thêm về các biểu thức JavaScript: https://developer.mozilla.org/en/JavaScript/Guide/Regular_Expressions
"^" Cho phần đầu của dòng "$" cho phần cuối của dòng. Ví dụ.:
var re = /^abc$/;
Sẽ khớp với "abc" chứ không phải "1abc" hoặc "abc1". Bạn có thể tìm hiểu thêm tại https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
\babc\b
, điều này sẽ cho phép ví dụ123 abc 123
phù hợp vớiabc
(nhưng không phải là ví dụ tiêu cực như trong câu hỏi); tuy nhiên,^abc$
sẽ đảm bảo rằng đóa
là ở đầu chuỗi vàc
ở cuối - nếu không nó sẽ không khớp.