2012-12-12 26 views
1

我有考慮的驗證任務,我想修剪字符串如果包含字母形式的8位連續,例如:omiting連續8個位數(不數值)從輸入

「三四五五兩三四一二」或‘threefourfivefivetwothreefouronetwo’

我想知道是否是這個或其他一些建議,一些正則表達式可能。

它可以是在Javascript或Java中

輸入字符串:樣本串三四五五二三四一二remainimg串

輸入字符串: 「樣本串threefourfivefivetwothreefouronetwo remainimg字符串」

我期望的字符串:「樣本串remainimg串

感謝,Jibby

+1

可否請你用的通緝輸入和輸出的例子更新您的問題嗎?至於現在,它太模糊了。此外,這應該用JS還是Java來完成? – raina77ow

+2

一)爲什麼你有一個Java和JavaScript代碼? b)你的意思是數字還是數字? c)修剪是什麼意思?從單詞中刪除這些連續的數字?完全拒絕字符串?如果有8個數字出現多次? d)你有什麼嘗試? –

+0

我的嘗試是無法訪問我現在我試圖使用它們中的任何一個,因此我採取了包含這十個數字的字符串數組,並迭代inout,這是很多代碼,這就是爲什麼我搜索更短的變體 –

回答

-1

如果數字是像你的例子闡述了,你需要它的JavaScript,然後試試這個:

var eightDigitsRegex = /(?:(?:zero|one|two|three|...|nine)\s*){8,}/; 
if (string.match(eightDigitsRegex)) { 
    // It matches. 
} 

確保你補充的數字,其餘在eightDigitsRegex中間。

  • (?:)是非捕獲組
  • zero|...|nine - 數字替代
  • {8} - 重複計數(對應於任何數字的非捕獲組會遇到8倍

EDIT :只有在這裏正則表達式匹配請澄清「微調」是,正是刪除匹配的子字符串的任何whitespac? Ë周圍..

+0

刪除空白單獨的步驟是不可取的,因爲它會損壞字符串的其餘部分,甚至會產生誤報。例如:''在兩個三...「'不應該匹配。 – dan1111

+0

沒錯,但那是在沒有提及任何周圍字符串的問題編輯之前。我在等待澄清以發佈完整回覆。 –

+0

從示例中可以清楚看出,修剪意味着從字符串中刪除匹配的部分。 – dan1111

1

這應該爲Javascript工作:

str.replace(
    /(?:(?:zero|one|two|three|four|five|six|seven|eight|nine)\s*){8,}/g, 
    "" 
); 
+0

這不會匹配'threefourfivetwothreefouronetwo' –

+0

只需將'{8}'修改爲'{8,}' – nhahtdh

+0

@AlexanderPavlov,謝謝,更正。說明中只提到了八位數字,我沒有注意到該示例顯示它也應該匹配八位數字。 – dan1111