簡體   English   中英

正則表達式在找到Alpha字符時分割數字串

[英]Regex split string of numbers at finding of Alpha Characters

好的Regex對我來說是最令人困惑的事情之一。 我試圖在Javascript中這樣做。 我有一個搜索字段,用戶將輸入一系列字符。 代碼是:

999MC111

要不就

999MC

總共有2個Alpha字符。 但前面可能有1-4個字符,最后可能有1-4個字符。

如果代碼ENDS帶有Alpha字符,那么我運行某個ajax腳本。 如果有數字+ 2個字母+數字....它運行不同的ajax腳本。

我的斗爭是我知道\\ d是2位數...但它可能不總是2位數。

那么我的正則表達式代碼將它分成一個數組。 或者其他的東西。

我認為正確的正則表達式是(/ ^([0-9] +)([a-zA-z] +)([0-9] +)$ /

但是我如何確保其中間只有2個字母?

謝謝

您可以使用正則表達式/\\d$/來確定它是否以小數結尾。

\\d匹配十進制字符, $匹配字符串的結尾。 /字符包含表達式。

嘗試逐行在javascript控制台中運行它。

var values = ['999MC111', '999MC', '999XYZ111']; // some test values

// does it end in digits?

!!values[0].match(/\d$/); // evaluates to true
!!values[1].match(/\d$/); // evaluates to false

要指定令牌的確切數量,您必須使用括號{},因此如果您知道有2個字母標記放置{2} ,如果您知道可能有0-4位數,則放置{0,4}

^([0-9]{0,4})([a-zA-z]{2})([0-9]{0,4})$

上述RegEx評估如下:

  • 999MC ---> TRUE
  • 999MC111 - >正確
  • 999MAC111 ---> FALSE
  • MC ---> TRUE

將表達式拆分為捕獲組是通過將子表達式分組到括號中來完成的

正如您在以下鏈接中看到的:

http://regexr.com?2vfhv

你得到這個:

3個捕獲組:
第1組: ([0-9]{0,4})
第2組: ([a-zA-z]{2})
第3組: ([0-9]{0,4})

正則表達式/^\\d{1,4}[a-zA-Z]{2}\\d{0,4}$/匹配一系列1-4位數字,后跟一系列2個字母字符,后跟另一系列0-4位數。

此正則表達式: /^\\d{1,4}[a-zA-Z]{2}$/匹配一系列1-4位數字,后跟2個字母字符。

好的,所以我並不真正關心中間2個字符....真正重要的是第一組數字和最后一組數字(如果有的話)。

所以基本上我只需要處理數字。 所以我這樣做了:

var lead = '123mc444'; //For example purposes
var regex = /(\d+)/g;
var result = (lead.match(regex));

var memID = result[0]; //First set of numbers is member id
if(result[1] != undefined) {
    var leadID = result[1];
}

暫無
暫無

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

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