2014-11-22 66 views
-2

我有一些字符串作爲輸入,例如:sometext
什麼模式我必須使用與在任何地方的空間和點與之相匹配的字符串:匹配字符串和隨機空格嗎?

  1. sometext              
  2. some text              
  3. so metex.t            
  4. 111 s.o.m.e t e x t 222

替換空格和點不是解決方案,因爲我需要原始匹配的部分來突出顯示。

+0

你是一個正則表達式之後按順序匹配字母s,o,m,e,t,e,x,t,其中sometext可以是任何randow字符串?或者你是否專門處理了忽略空格和完全停留的正則表達式?你的問題是廣泛的解釋,並被正確的理由拒絕。試着在你想要的東西上更具體些,並舉例說明你嘗試過的東西沒有用。 – 2014-11-22 14:58:03

+0

我是一個正則表達式,忽略空格和fullstops – mu3 2014-11-22 15:24:25

回答

2

您可以使用:

/s\W*o\W*m\W*e\W*t\W*e\W*x\W*t/ 
>>> foo = "sometext" 
    bar = "sometext|some text|so metex.t|111 s.o.m.e t e x t 222".split(/\|/g) 

    regex = new RegExp(foo.split(/|/g).join('\\W*')) 
    console.log(regex) 

    arr = [] 
    for (i = 0; i < 4; i++) 
     arr.push(regex.exec(bar[i])[0]) 

    arr 

<<< /s\W*o\W*m\W*e\W*t\W*e\W*x\W*t/ 
... ["sometext", "some text", "so metex.t", "s.o.m.e t e x t"] 
+0

@AvinashRaj正確的方式來錨!取決於「匹配」的OP意味着什麼,錨不會被用來匹配現有字符串中的單詞,而如果用來驗證序列,它們將是必需的。 – Unihedron 2014-11-22 15:19:18

+0

這正是我想要的,只是認爲有一些標誌可以完成這項工作。謝謝! – mu3 2014-11-22 15:32:48

0

你可以先剝去空間/等字符,檢查剩餘的比賽,如:

yourString.replace(/[ .]+/g, '').match(/sometext/) 
+0

我必須使用原始匹配的部分(帶空格) – mu3 2014-11-22 14:55:28

+0

您的原始上面沒有修改。順便說一句,你總是可以使用更精細的正則表達式來匹配它有/沒有空格/點。只是想我會建議一個更清潔/更短的選項。 :-) – techfoobar 2014-11-22 14:56:54

+0

ie「some.te x.t'.match(/ [。] * s [。] * o [。] * m [。] * e [。] * t [。] * e [。] * x [。] * t [。] * /)' – techfoobar 2014-11-22 14:57:49