preg_match trong JavaScript?


77

Có thể JavaScriptlàm một cái gì đó như preg_matchkhông trong PHP?

Tôi muốn có thể lấy hai số từ chuỗi:

var text = 'price[5][68]';

thành hai biến được tách biệt:

var productId = 5;
var shopId    = 68;

Chỉnh sửa: Tôi cũng sử dụng MooToolsnếu nó sẽ giúp ích.

Câu trả lời:


113

JavaScript có một RegExpđối tượng thực hiện những gì bạn muốn. Đối Stringtượng có một match()chức năng sẽ giúp bạn ra ngoài.

var matches = text.match(/price\[(\d+)\]\[(\d+)\]/);
var productId = matches[1];
var shopId    = matches[2];

32
Đối với những người Google khác; text.matchsẽ trả về kết quả của khớp. như vậy var match = text.match(/price\[(\d+)\]\[(\d+)\]/)và sau đóalert(match[1]);
Maurice

33
var text = 'price[5][68]';
var regex = /price\[(\d+)\]\[(\d+)\]/gi;
match = regex.exec(text);

đối sánh [1] và đối sánh [2] sẽ chứa các số bạn đang tìm.


23
var thisRegex = new RegExp('\[(\d+)\]\[(\d+)\]');

if(!thisRegex.test(text)){
    alert('fail');
}

Tôi thấy kiểm tra hoạt động nhiều hơn preg_match vì nó cung cấp một kết quả Boolean. Tuy nhiên, bạn phải khai báo một RegExp var.

MẸO: RegExp thêm nó của riêng nó / khi bắt đầu và kết thúc, vì vậy đừng vượt qua chúng.


6
Bạn cũng có thể rút ngắn điều này với/\[(\d+)\]\[(\d+)\]/.test(text)
0x6C77

Tôi đồng ý, vì tôi đang tìm cách tái tạo tính năng kiểm tra regex của preg_match khi tôi nhìn thấy tiêu đề của câu hỏi này;)
flu

Việc sử dụng phương thức khởi tạo lớp RegExp có lợi ích là nếu bạn cần nội suy một biến trong mẫu, nó sẽ mất một chuỗi!
Nathaniel Rogers,

Chỉ hoạt động với tôi khi thoát khỏi dấu gạch chéo ngược, như '\ [(\\ d +) \] \ [(\\ d +) \]'
nr

6

Điều này sẽ hoạt động:

var matches = text.match(/\[(\d+)\][(\d+)\]/);
var productId = matches[1];
var shopId = matches[2];

4
var myregexp = /\[(\d+)\]\[(\d+)\]/;
var match = myregexp.exec(text);
if (match != null) {
    var productId = match[1];
    var shopId = match[2];
} else {
    // no match
}

0

Mã mẫu để lấy liên kết hình ảnh trong nội dung HTML. Giống như preg_match_all trong PHP

let HTML = '<div class="imageset"><table><tbody><tr><td width="50%"><img src="htt ps://domain.com/uploads/monthly_2019_11/7/1.png.jpg" class="fr-fic fr-dii"></td><td width="50%"><img src="htt ps://domain.com/uploads/monthly_2019_11/7/9.png.jpg" class="fr-fic fr-dii"></td></tr></tbody></table></div>';
let re = /<img src="(.*?)"/gi;
let result = HTML.match(re);

ra mảng

0: "<img src="htt ps://domain.com/uploads/monthly_2019_11/7/1.png.jpg""
1: "<img src="htt ps://domain.com/uploads/monthly_2019_11/7/9.png.jpg""

0

Một số Google đã đưa tôi đến điều này :

function preg_match (regex, str) {
  return (new RegExp(regex).test(str))
}
console.log(preg_match("^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$","test"))
console.log(preg_match("^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$","what@google.com"))

Xem https://locutus.io để biết thêm thông tin.


0

lấy lại chuỗi đã khớp hoặc sai

function preg_match (regex, str) {
  if (new RegExp(regex).test(str)){
    return regex.exec(str);
  }
  return false;
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.