簡體   English   中英

正則表達式匹配?

[英]Regex string match?

我在javascript中有一個很長的字符串

var string = 'abc234832748374asdf7943278934haskhjd';

我想要匹配

abc234832748374 - 就是 - 我試過了

string.match(\\abc[^abc]|\\def[^def]|)但是這並不能讓我得到兩個字符串,因為我需要它們之后的數字?

基本上我需要abc后+ 8個字符和def后的8-11個字符? 我怎樣才能做到這一點 ?

如果你想要文字字符串abcdef后跟8-11位數字,你需要這樣的東西:

(abc|def)[0-9]{8,11}

你可以在這里測試一下: http//www.regular-expressions.info/javascriptexample.html

要知道,如果你不想匹配多於 11位,您將需要一個錨(或[^0-9]在字符串的結尾)。 如果它只是8或更多,您可以用{8}替換{8,11} {8}

要詳細說明已發布的答案,您需要全局匹配,如下所示:

var matches = string.match(/(abc|def)\d{8,11}/g);

這將匹配字符串的所有子集:

  • 以“abc”或“def”開頭。 這是“(abc | def)”部分
  • 然后是8-11位數。 這是“\\ d {8,11}”部分。 \\ d匹配數字。

“g”標志(全局)為您提供所有匹配的列表,而不僅僅是第一個匹配。

在你的問題中,你要求8-11個字符而不是數字。 如果它們是數字還是其他字符無關緊要,您可以使用“。” 而不是“\\ d”。

我還注意到,每個示例匹配在“abc”或“def”之后都有超過11個字符。 如果有任意數量的數字,那么以下正則表達式可能更適合:

  • 任意數量的數字 - var matches = string.match(/(abc|def)\\d*/g);
  • 至少有一個數字 - var matches = string.match(/(abc|def)\\d+/g);
  • 至少8位 - var matches = string.match(/(abc|def)\\d{8,}/g);

您可以將abc[0-9]{8}與字符串abc匹配,后跟8位數字。

如果前三個字符是任意的,之后是8-11個數字,請嘗試[az]{3}[0-9]{8,11}

使用下面的正則表達式來獲得完全匹配,

string.match(/(abc|def)\d{8,11}/g);

結束與g

全球的"g"

"i"代表ignoreCase

"m"代表多行

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM