2016-09-22 56 views
0

我有一個是從NFC NDEF有效載荷生成的,如下的字符串:正則表達式用於從JavaScript的NDEF標籤抓取有效載荷

字符串:

enMAC_98:D3:36:00:A2:90

從這個:

var MACdevicex = String(finalNdef.match(/MAC_(.*)/));

我想抓住字符串的MAC_部分之後的所有文本。但是我得到的是下面的字符串。我需要以上由我的match()生成的文本中逗號後面的文本。我不想要做的另一場比賽來劃分逗號部分,希望可以做到這一切在一個比賽()

獲得錯誤的文字:

MAC_98:D3:36:00:A2:90 ,98:D3:36:00:A2:90

+0

這是第一個捕獲的組,因此使用:'var MACdevicex = finalNdef.match(/ MAC _(。*)/)[1];' – anubhava

+0

只是'var MACdevicex = finalNdef.match(/ MAC _(。*)/) [1];'就夠了。另請參閱[此JSFiddle](https://jsfiddle.net/nxda7b0t/1/)。 –

+0

試過這個,輸出只是文本「MAC:A」 – condo1234

回答

0

您需要從字符串中獲取捕獲值,而不是整個匹配。

隨着String#match並沒有一個全球性的修改g一個正則表達式,你得到一個包含[0]整場比賽和[1]捕捉值1 ... [n]捕捉值n數組。

返回值

一種Array含有整個匹配結果和任何括號捕獲的匹配的結果; null如果沒有匹配。

使用它的最好方法是首先檢查是否有匹配,然後才能訪問第二個元素。

var MACdevicex = (m = "enMAC_98:D3:36:00:A2:90".match(/MAC_(.*)/)) ? m[1] : ""; 
 
console.log(MACdevicex);

在這裏,我們給比賽結果m,如果有一個匹配,則返回m[1](第1組捕捉值),否則,返回""一個空字符串。