Hướng dẫn get string from regex javascript - lấy chuỗi từ javascript regex

Tôi đang cố gắng trích xuất một chuỗi con từ một tệp với JavaScript Regex. Đây là một lát từ tệp:

DATE:20091201T220000
SUMMARY:Dad's birthday

Trường tôi muốn trích xuất là "Tóm tắt". Đây là cách tiếp cận:

extractSummary : function(iCalContent) {
  /*
  input : iCal file content
  return : Event summary
  */
  var arr = iCalContent.match(/^SUMMARY\:(.)*$/g);
  return(arr);
}

Hướng dẫn get string from regex javascript - lấy chuỗi từ javascript regex

Piper

1.2562 huy hiệu vàng15 Huy hiệu bạc25 Huy hiệu đồng2 gold badges15 silver badges25 bronze badges

Hỏi ngày 10 tháng 11 năm 2009 lúc 11:30Nov 10, 2009 at 11:30

PapelpincelpapelpincelPapelPincel

4.0856 Huy hiệu vàng38 Huy hiệu bạc48 Huy hiệu đồng6 gold badges38 silver badges48 bronze badges

function extractSummary(iCalContent) {
  var rx = /\nSUMMARY:(.*)\n/g;
  var arr = rx.exec(iCalContent);
  return arr[1]; 
}

Bạn cần những thay đổi này:

  • Đặt * bên trong dấu ngoặc đơn như đề xuất ở trên. Nếu không, nhóm phù hợp của bạn sẽ chỉ chứa một ký tự.

  • Loại bỏ

    extractSummary : function(iCalContent) {
      /*
      input : iCal file content
      return : Event summary
      */
      var arr = iCalContent.match(/^SUMMARY\:(.)*$/g);
      return(arr);
    }
    
    0 và
    extractSummary : function(iCalContent) {
      /*
      input : iCal file content
      return : Event summary
      */
      var arr = iCalContent.match(/^SUMMARY\:(.)*$/g);
      return(arr);
    }
    
    1. Với tùy chọn toàn cầu, chúng phù hợp khi bắt đầu và kết thúc chuỗi đầy đủ, thay vì bắt đầu và kết thúc các dòng. Phù hợp trên Newlines rõ ràng thay thế.

  • Tôi cho rằng bạn muốn nhóm phù hợp (có gì bên trong dấu ngoặc đơn) chứ không phải là mảng đầy đủ?

    extractSummary : function(iCalContent) {
      /*
      input : iCal file content
      return : Event summary
      */
      var arr = iCalContent.match(/^SUMMARY\:(.)*$/g);
      return(arr);
    }
    
    2 là phù hợp đầy đủ (
    extractSummary : function(iCalContent) {
      /*
      input : iCal file content
      return : Event summary
      */
      var arr = iCalContent.match(/^SUMMARY\:(.)*$/g);
      return(arr);
    }
    
    3) và các chỉ mục tiếp theo chứa các khớp của nhóm.

  • String.Match (RegEXP) được cho là sẽ trả về một mảng với các trận đấu. Trong trình duyệt của tôi, nó không (Safari trên Mac chỉ trả về toàn bộ, không phải các nhóm), mà là regexp.exec (chuỗi) hoạt động.

Đã trả lời ngày 10 tháng 11 năm 2009 lúc 12:34Nov 10, 2009 at 12:34

j-g-faustusj-g-faustusj-g-faustus

8,5934 Huy hiệu vàng31 Huy hiệu bạc42 Huy hiệu đồng4 gold badges31 silver badges42 bronze badges

1

Bạn cần sử dụng cờ

extractSummary : function(iCalContent) {
  /*
  input : iCal file content
  return : Event summary
  */
  var arr = iCalContent.match(/^SUMMARY\:(.)*$/g);
  return(arr);
}
4:

đa dòng; Xử lý các ký tự bắt đầu và kết thúc (^ và $) là hoạt động trên nhiều dòng (nghĩa là, khớp với đầu hoặc cuối của mỗi dòng (được phân định bởi \ n hoặc \ r), không chỉ là đầu hoặc đầu của toàn bộ chuỗi đầu vào)

Cũng đặt * vào đúng nơi:

"DATE:20091201T220000\r\nSUMMARY:Dad's birthday".match(/^SUMMARY\:(.*)$/gm);
//------------------------------------------------------------------^    ^
//-----------------------------------------------------------------------|

Đã trả lời ngày 10 tháng 11 năm 2009 lúc 13:18Nov 10, 2009 at 13:18

Hướng dẫn get string from regex javascript - lấy chuỗi từ javascript regex

Salman Asalman aSalman A

253K80 Huy hiệu vàng424 Huy hiệu bạc513 Huy hiệu Đồng80 gold badges424 silver badges513 bronze badges

Biểu hiện thường xuyên của bạn rất có thể muốn

/\nSUMMARY:(.*)$/g

Một thủ thuật nhỏ hữu ích mà tôi muốn sử dụng là mặc định gán cho khớp với một mảng.

var arr = iCalContent.match(/\nSUMMARY:(.*)$/g) || [""]; //could also use null for empty value
return arr[0];

Bằng cách này, bạn không gặp lỗi loại khó chịu khi bạn sử dụng

extractSummary : function(iCalContent) {
  /*
  input : iCal file content
  return : Event summary
  */
  var arr = iCalContent.match(/^SUMMARY\:(.)*$/g);
  return(arr);
}
6

Đã trả lời ngày 10 tháng 11 năm 2009 lúc 12:36Nov 10, 2009 at 12:36

2

extractSummary : function(iCalContent) {
  /*
  input : iCal file content
  return : Event summary
  */
  var arr = iCalContent.match(/^SUMMARY\:(.)*$/g);
  return(arr);
}
7 thay vì
extractSummary : function(iCalContent) {
  /*
  input : iCal file content
  return : Event summary
  */
  var arr = iCalContent.match(/^SUMMARY\:(.)*$/g);
  return(arr);
}
8 sẽ là một khởi đầu. Cái sau sẽ chỉ bắt được ký tự cuối cùng trên dòng.

Ngoài ra, không cần phải thoát khỏi

extractSummary : function(iCalContent) {
  /*
  input : iCal file content
  return : Event summary
  */
  var arr = iCalContent.match(/^SUMMARY\:(.)*$/g);
  return(arr);
}
9.

Đã trả lời ngày 10 tháng 11 năm 2009 lúc 11:32Nov 10, 2009 at 11:32

Tim Pietzckertim PietzckerTim Pietzcker

Phù bằng vàng 319K5757 gold badges494 silver badges550 bronze badges

Mã này hoạt động:

let str = "governance[string_i_want]"; 
let res = str.match(/[^governance\[](.*)[^\]]/g);
console.log(res);

Res sẽ bằng "String_i_want". Tuy nhiên, trong ví dụ này, Res vẫn là một mảng, vì vậy không đối xử với Res như một chuỗi.

Bằng cách nhóm các ký tự tôi không muốn, sử dụng [^chuỗi] và khớp với những gì giữa các dấu ngoặc, mã trích xuất chuỗi tôi muốn!

Bạn có thể dùng thử ở đây: https://www.w3schools.com/jsref/tryit.asp?filename=trejsref_match_regexp

Chúc may mắn.

Hướng dẫn get string from regex javascript - lấy chuỗi từ javascript regex

CCPIZZA

26.7K15 Huy hiệu vàng157 Huy hiệu bạc151 Huy hiệu đồng15 gold badges157 silver badges151 bronze badges

Đã trả lời ngày 2 tháng 12 năm 2020 lúc 12:52Dec 2, 2020 at 12:52

guidamediaguidamediaguidamedia

1091 Huy hiệu bạc4 Huy hiệu đồng1 silver badge4 bronze badges

Bạn nên sử dụng điều này:

var arr = iCalContent.match(/^SUMMARY\:(.)*$/g);
return(arr[0]);

Đã trả lời ngày 17 tháng 5 năm 2021 lúc 20:21May 17, 2021 at 20:21

MbistamimbistamiMbistami

3972 Huy hiệu bạc11 Huy hiệu đồng2 silver badges11 bronze badges

Đây là cách bạn có thể phân tích các tệp ical với javascript

    function calParse(str) {

        function parse() {
            var obj = {};
            while(str.length) {
                var p = str.shift().split(":");
                var k = p.shift(), p = p.join();
                switch(k) {
                    case "BEGIN":
                        obj[p] = parse();
                        break;
                    case "END":
                        return obj;
                    default:
                        obj[k] = p;
                }
            }
            return obj;
        }
        str = str.replace(/\n /g, " ").split("\n");
        return parse().VCALENDAR;
    }

    example = 
    'BEGIN:VCALENDAR\n'+
    'VERSION:2.0\n'+
    'PRODID:-//hacksw/handcal//NONSGML v1.0//EN\n'+
    'BEGIN:VEVENT\n'+
    'DTSTART:19970714T170000Z\n'+
    'DTEND:19970715T035959Z\n'+
    'SUMMARY:Bastille Day Party\n'+
    'END:VEVENT\n'+
    'END:VCALENDAR\n'


    cal = calParse(example);
    alert(cal.VEVENT.SUMMARY);

Đã trả lời ngày 10 tháng 11 năm 2009 lúc 13:04Nov 10, 2009 at 13:04

user187291user187291user187291

52,8K19 Huy hiệu vàng94 Huy hiệu bạc127 Huy hiệu đồng19 gold badges94 silver badges127 bronze badges

Làm thế nào để bạn tìm thấy một chuỗi trong regex?

Với Regex, bạn có thể sử dụng khớp mẫu để tìm kiếm các chuỗi ký tự cụ thể thay vì xây dựng nhiều truy vấn tìm kiếm theo nghĩa đen ...
NLRT-0381..
NLRT-6334..
NLRT-9167..
Regex thuyết tương đối thích hợp là: "## nlrt- \ d {4}" ..

Làm thế nào để bạn tìm kiếm một chuỗi cho một mẫu trong javascript?

Sử dụng phương thức EXEC () EXEC () là phương thức biểu thức regexp.Nó tìm kiếm một chuỗi cho một mẫu được chỉ định và trả về văn bản tìm thấy dưới dạng một đối tượng.Nếu không tìm thấy khớp, nó sẽ trả về một đối tượng trống (NULL). The exec() method is a RegExp expression method. It searches a string for a specified pattern, and returns the found text as an object. If no match is found, it returns an empty (null) object.

Làm thế nào để bạn kiểm tra xem một chuỗi có khớp với regex trong js không?

Nếu bạn cần biết nếu một chuỗi phù hợp với biểu thức thông thường regexp, hãy sử dụng regexp.prototype.test ().Nếu bạn chỉ muốn trận đấu đầu tiên được tìm thấy, bạn có thể muốn sử dụng regexp.prototype.exec () thay thế.use RegExp.prototype.test() . If you only want the first match found, you might want to use RegExp.prototype.exec() instead.

Là gì?: Trong regex?

Nó chỉ ra rằng Subpattern là một tiểu đơn vị không bắt giữ.Điều đó có nghĩa là bất cứ điều gì được khớp trong (?indicates that the subpattern is a non-capture subpattern. That means whatever is matched in (?:\w+\s) , even though it's enclosed by () it won't appear in the list of matches, only (\w+) will.