Hướng dẫn javascript get string between brackets - javascript lấy chuỗi giữa các dấu ngoặc

70

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi cần trả về chỉ văn bản chứa trong dấu ngoặc vuông trong một chuỗi. Tôi có Regex sau, nhưng điều này cũng trả về dấu ngoặc vuông:

var matched = mystring.match("\\[.*]");

Một chuỗi sẽ chỉ chứa một bộ dấu ngoặc vuông, ví dụ:

Some text with [some important info]

Tôi muốn khớp với 'một số thông tin quan trọng', thay vì '[một số thông tin quan trọng]' tôi hiện đang nhận được.

hỏi ngày 29 tháng 9 năm 2009 lúc 14:47Sep 29, 2009 at 14:47

Hướng dẫn javascript get string between brackets - javascript lấy chuỗi giữa các dấu ngoặc

Sử dụng nhóm. Tôi đã thêm một

Some text with [some important info]
1 để tạo ra "ungreedy" phù hợp, vì đây có lẽ là những gì bạn muốn.

var matches = mystring.match(/\[(.*?)\]/);

if (matches) {
    var submatch = matches[1];
}

Đã trả lời ngày 29 tháng 9 năm 2009 lúc 14:54Sep 29, 2009 at 14:54

Alex Barrettalex BarrettAlex Barrett

15.7K3 Huy hiệu vàng 50 Huy hiệu bạc51 Huy hiệu Đồng3 gold badges50 silver badges51 bronze badges

1

Vì JavaScript không hỗ trợ bắt giữ, bạn phải hack xung quanh nó. Hãy xem xét sự thay thế này có cách tiếp cận ngược lại. Thay vào đó, nắm bắt những gì bên trong ngoặc, loại bỏ những gì bên ngoài chúng. Vì sẽ chỉ có một bộ dấu ngoặc, nên nó sẽ hoạt động tốt. Tôi thường sử dụng kỹ thuật này để tước bỏ khoảng trắng hàng đầu và dấu vết.

mystring.replace( /(^.*\[|\].*$)/g, '' );

Đã trả lời ngày 29 tháng 9 năm 2009 lúc 19:04Sep 29, 2009 at 19:04

Stephen Sorensensephen SorensenStephen Sorensen

10,9K12 Huy hiệu vàng31 Huy hiệu bạc45 Huy hiệu Đồng12 gold badges31 silver badges45 bronze badges

1

Để phù hợp với bất kỳ văn bản nào ở giữa hai dấu ngoặc vuông mở và đóng liền kề, bạn có thể sử dụng mẫu sau:

\[([^\][]*)]
(?<=\[)[^\][]*(?=])

Xem bản demo Regex #1 và Regex Demo #2. Lưu ý: Regex thứ hai với Lookaround được hỗ trợ trong môi trường JavaScript tuân thủ ECMAScript 2018. Trong trường hợp các môi trường cũ cần được hỗ trợ, hãy sử dụng regex đầu tiên với một nhóm bắt giữ.NOTE: The second regex with lookarounds is supported in JavaScript environments that are ECMAScript 2018 compliant. In case older environments need to be supported, use the first regex with a capturing group.

Details:

  • Some text with [some important info]
    
    2 - Một cái nhìn tích cực phù hợp với một vị trí ngay trước đó với
    Some text with [some important info]
    
    3 char (tức là điều này yêu cầu một char
    Some text with [some important info]
    
    3 xảy ra ngay lập tức ở bên trái của vị trí hiện tại)
  • Some text with [some important info]
    
    5 - số không hoặc nhiều hơn (
    Some text with [some important info]
    
    6) Chars khác với
    Some text with [some important info]
    
    3 và
    Some text with [some important info]
    
    8 (lưu ý rằng phiên bản
    Some text with [some important info]
    
    9 là cùng một mẫu được chụp thành một nhóm chụp có ID 1)
  • var matches = mystring.match(/\[(.*?)\]/);
    
    if (matches) {
        var submatch = matches[1];
    }
    
    0 - Một cái nhìn tích cực phù hợp với một vị trí ngay lập tức được theo sau với
    Some text with [some important info]
    
    8 char (nghĩa là điều này yêu cầu một char
    Some text with [some important info]
    
    8 xảy ra ngay lập tức ở bên phải vị trí chỉ số Regex hiện tại).

Bây giờ, trong mã, bạn có thể sử dụng các mục sau:

const text = "[Some text] ][with[ [some important info]";
console.log( text.match(/(?<=\[)[^\][]*(?=])/g) );
console.log( Array.from(text.matchAll(/\[([^\][]*)]/g), x => x[1]) );
// Both return ["Some text", "some important info"]

Dưới đây là một cách di sản để trích xuất các chuỗi con bị bắt bằng cách sử dụng

var matches = mystring.match(/\[(.*?)\]/);

if (matches) {
    var submatch = matches[1];
}
3 trong một vòng lặp:

var text = "[Some text] ][with[ [some important info]";
var regex = /\[([^\][]*)]/g;
var results=[], m;
while ( m = regex.exec(text) ) {
  results.push(m[1]);
}
console.log( results );

Đã trả lời ngày 19 tháng 2 năm 2021 lúc 21:16Feb 19, 2021 at 21:16

Hướng dẫn javascript get string between brackets - javascript lấy chuỗi giữa các dấu ngoặc

Wiktor Stribiżewwiktor StribiżewWiktor Stribiżew

582K34 Huy hiệu vàng402 Huy hiệu bạc 503 Huy hiệu đồng34 gold badges402 silver badges503 bronze badges

Bạn đã thử bắt giữ Parens:

("\\[(.*)]");

Điều này sẽ trả về mô hình trong khung dưới dạng một trận đấu bị bắt trong mảng đã trả về

Praveen

53.9K32 Huy hiệu vàng131 Huy hiệu bạc160 Huy hiệu đồng32 gold badges131 silver badges160 bronze badges

Đã trả lời ngày 29 tháng 9 năm 2009 lúc 14:50Sep 29, 2009 at 14:50

Hướng dẫn javascript get string between brackets - javascript lấy chuỗi giữa các dấu ngoặc

Ennuikillerennuikillerennuikiller

45,7K14 Huy hiệu vàng110 Huy hiệu bạc137 Huy hiệu đồng14 gold badges110 silver badges137 bronze badges

Chỉ cần sử dụng

var matches = mystring.match(/\[(.*?)\]/);

if (matches) {
    var submatch = matches[1];
}
4 và
var matches = mystring.match(/\[(.*?)\]/);

if (matches) {
    var submatch = matches[1];
}
5

"blabla (some info) blabla".match(/\((.*?)\)/g).map(b=>b.replace(/\(|(.*?)\)/g,"$1"))

Đã trả lời ngày 25 tháng 7 năm 2018 lúc 10:51Jul 25, 2018 at 10:51

Hướng dẫn javascript get string between brackets - javascript lấy chuỗi giữa các dấu ngoặc

ivan0biwanivan0biwanivan0biwan

1892 Huy hiệu bạc7 Huy hiệu đồng2 silver badges7 bronze badges

Bạn không thể. JavaScript không hỗ trợ Lookbehinds.

Bạn sẽ phải sử dụng một nhóm chụp hoặc cắt ra khỏi giá đỡ.

Nhân tiện, có lẽ bạn không muốn một

var matches = mystring.match(/\[(.*?)\]/);

if (matches) {
    var submatch = matches[1];
}
6 tham lam trong regex của bạn. Thử cái này:

"\\[.*?]"

Hoặc tốt hơn, điều này:

Some text with [some important info]
0

Đã trả lời ngày 29 tháng 9 năm 2009 lúc 14:50Sep 29, 2009 at 14:50

Hướng dẫn javascript get string between brackets - javascript lấy chuỗi giữa các dấu ngoặc

EnnuikillerennuikillerJeremy Stein

45,7K14 Huy hiệu vàng110 Huy hiệu bạc137 Huy hiệu đồng16 gold badges68 silver badges82 bronze badges

Làm thế nào để bạn đặt văn bản vào giữa các dấu ngoặc?

Trích xuất văn bản giữa dấu ngoặc đơn để trích xuất văn bản giữa bất kỳ ký tự nào, sử dụng một công thức với MID và tìm các chức năng. Hàm tìm xác định vị trí dấu ngoặc đơn và hàm mid trả về các ký tự ở giữa chúng.use a formula with the MID and FIND functions. The FIND Function locates the parenthesis and the MID Function returns the characters in between them.

Làm thế nào để bạn sử dụng dấu ngoặc đơn trong một chuỗi trong JavaScript?

Cho một chuỗi chỉ bao gồm hai loại ký tự: "(" và ")".Chúng tôi được yêu cầu viết một hàm có trong một chuỗi như vậy và cân bằng các dấu ngoặc đơn bằng cách chèn một "(" hoặc a ")" "nhiều lần khi cần thiết.inserting either a "(" or a ")" as many times as necessary.

Làm thế nào để bạn phù hợp với niềng răng xoăn với các biểu thức thông thường?

Để phù hợp với niềng răng xoăn theo nghĩa đen, bạn phải thoát khỏi chúng với \.Tuy nhiên, mã Apex cũng sử dụng \ như một lối thoát, vì vậy bạn phải "thoát khỏi lối thoát".Bạn sẽ cần phải làm điều này gần như mỗi khi bạn muốn sử dụng bất kỳ loại ký tự đặc biệt nào trong regexp của bạn theo nghĩa đen, điều này sẽ xảy ra thường xuyên hơn không.escape them with \ . However, Apex Code uses \ as an escape, too, so you have to "escape the escape". You'll need to do this almost every time you want to use any sort of special characters in your regexp literally, which will happen more frequently than not.

Làm thế nào để bạn sử dụng dấu ngoặc đơn trong regex?

Bằng cách đặt một phần của một biểu thức thông thường bên trong ngoặc tròn hoặc dấu ngoặc đơn, bạn có thể nhóm một phần của biểu thức thông thường với nhau.Điều này cho phép bạn áp dụng một bộ định lượng cho toàn bộ nhóm hoặc để hạn chế sự xen kẽ cho một phần của regex.Chỉ có dấu ngoặc đơn mới có thể được sử dụng để nhóm.. This allows you to apply a quantifier to the entire group or to restrict alternation to part of the regex. Only parentheses can be used for grouping.