2014-10-27 267 views
1

我的第一個stackoverflow問題!因此,讓我知道如果我能夠更好地獲取這些信息/如果我在搜索中很好地解決了我的問題。 :)同時...對問題的解決!正則表達式返回null與返回空字符串

所以我有一個正則表達式功能:

s = "benisasillyhehehe"; //this would be variable 
regex = /benisasilly(.*)/; 
console.log(s.match(regex)); 

,我想要做的就是登錄什麼附加到「benisasilly」如果它存在,並記錄爲空,如果它不是什麼。但是最終發生的是它會記錄一個空字符串。有沒有辦法將這個功能合併到正則表達式函數中,還是應該只在這個函數之外檢查它?另外,它甚至真的很重要嗎?我主要只是想做到這一點,因爲我在同一個系統中使用了其他正則表達式函數,因此我希望它們都具有相同的輸出格式。謝謝! :D

編輯: 讓我再澄清一點。這是我希望的輸出:

[ 'benisasillyhehehe','hehehe', index: 0, input: 'benisasillyhehehe' ] 

然後

null 

,如果它不能正常工作。

目前,當它不工作,我得到:所以我actuallyfor

[ 'benisasilly', '', index: 0, input: 'benisasilly' ] 

,空VS空字符串是在重要的我想這場比賽失敗VS具有匹配返回一個空字符串。

+0

是否要將'。*'改爲'。+'? – soktinpk 2014-10-27 23:48:43

+1

根據MDN:返回值=包含匹配結果的數組,如果沒有匹配,則返回null。 你是積極的,它返回空字符串? [1]:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match – bryce 2014-10-27 23:50:14

回答

1

這是我的第一篇文章。

你可以嘗試改變你的正則表達式來

regex = /benisasilly(.+)/; 

*返回一個空字符串,因爲*意味着匹配0或多個字符。 使用+表示至少應在原始字符串後附加1個字符。

+0

是這樣!我現在覺得自己很蠢,因爲我一直在使用+,但是甚至沒有意識到它就是這麼做的。萬分感謝! :) – ivebencrazy 2014-10-27 23:57:03

+0

soktinpk已經回答了它。對不起 – Nikko 2014-10-27 23:57:24

1

因此,當您嘗試執行s.match(regex)時,返回的對象是一個由兩個String值組成的數組。如果第一個元素包含regex值,則第一個元素是s變量。第二個元素是已附加到您的regex值的文本。如果s值根本不包含您的regex,則s.match(regex)將返回空值。我可以建議你設置你的代碼嗎? - >

s = "benisasillyhehehe"; 
regex = /benisasilly(.*)/; 
var match = s.match(regex); 
if(match) console.log(match[1] == "" ? null : match[1]); 
else console.log(null); 
+0

是!那當然有效!我主要是在尋找一個in-regex答案,但是謝謝! :) – ivebencrazy 2014-10-28 00:21:45