2015-11-11 91 views
0

我有這樣如何在JavaScript中有效匹配字符串中的數字?

XXX-1234 
XXXX-1234 
XX - 4321 
ABCDE - 4321 
AB -5677 

串於是就有開頭字母。那麼會有連字符。然後是4位數字。字母數量可能會有所不同,但數字的位數是相同的= 4

現在我需要匹配數字的前2個位置。所以我嘗試了一個漫長的過程。

temp_digit=mystring; 
temp_digit=temp_digit.replace(/ /g,''); 
temp_digit=temp_digit.split("-"); 
if(temp_digit[1].substring(0,2)=='12') {} 

現在有任何使用正則表達式/模式匹配的過程,以便我可以高效地執行此操作。類似於string.match(regexp)我在正則表達式模式中很愚蠢。我如何從上面的字符串中找到4位數字的前兩位數字?此外,它將是偉大的解決方案可以匹配數字沒有像連字符XXX 1234但這是可選的。

回答

1

可能會發生變化之後,但位數是相同= 4
現在我需要匹配來自數字的第一2個位置。

此外,它將是偉大的解決方案可以匹配數字不帶連字符像XXX 1234但這是可選的。

您確實需要檢查它是否以字母開頭?如何匹配任何4位數字,並只捕獲前2位數字?

的Regex

/\b(\d{2})\d{2}\b/ 

相配:

代碼

var regex = /\b(\d{2})\d{2}\b/; 
 
var str = 'ABCDE 4321'; 
 
    
 
var result = str.match(regex)[1]; 
 

 
document.body.innerText += result;

+0

太棒了。非常感謝你 – AtanuCSE

3

嘗試使用正則表達式,發現至少有一個字母[a-zA-Z]+,其次是一些空間,如果有必要\s*,後跟一個連字符-,其次是如果有必要\s*一些更多的空間。然後,它相匹配的前兩個數字\d{2}圖案。:

[a-zA-Z]+\s*-\s*(\d{2}) 
+0

非常好。感謝您的回答。有用。馬里亞諾的回答也符合我的選擇標準。 – AtanuCSE

0

如果總有4個數字結尾,你可以簡單地切它:

str.trim().slice(-4,-2); 

這裏是一個jsfiddle的例子字符串: https://jsfiddle.net/mckinleymedia/6suffmmm/

+0

這不是一個好主意,因爲任何愚蠢的用戶都可能錯誤地輸入空格。我想避免確切的定位號碼。 – AtanuCSE

+0

只需添加trim(),然後。我會更新答案 –

相關問題