2011-08-08 41 views
1

我有一個文本字符串「AB-123-2011-07-09」,需要刪除除「123」之外的所有內容,然後在最終結果中添加一個「#」符號。刪除部分與JavaScript不斷變化的文本字符串?

與「2011-07-09」(日期)一樣,字符串「123」的數量不斷增加。只有「AB」保持不變。

所以最終的結果是:#123

這可能嗎?

謝謝。

編輯:只是爲了澄清,我需要一個腳本,可以在全球範圍搜索頁面,並取代已格式的任何文本「AB- XXX -xxxx-XX-XX」只強調了數字在這裏以粗體顯示,然後在其之前添加「#」。

目前在該位置只有3位數字,但未來可能有4位數字。

我的代碼:

function Replace() { 
var OldString = "AB-123-2011-07-09"; 
var NewString = OldString.replace(/^AB-(\d+)-.*/, "#$1"); 
document.body.innerHTML = document.body.innerHTML.replace(OldString, NewString); 
} 
window.onload = Replace(); 

到目前爲止,只替換字符串的1個實例,並使用固定字符串( 「AB-123-2011-07-09」)。

我需要什麼正則表達式來使'OldString'動態,而不是像現在這樣修復?

回答

0

這是行不通的?

var result = mystring.replace(new RegExp(AB-([0-9]+)-[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9], "g"),"#$1"); 

mystring是 「AB-123-2011-07-09」 串和result將是 「#123」。

3
var data = "AB-123-2011-07-09"; 
var field = data.split('-')[1]; 
document.write("#" + field); 

http://jsfiddle.net/efortis/8acDr/

+0

我怎麼能在搜索中實現這一點,並取代JavaScript作爲通配符,即:無需輸入一個固定的字符串,如:「AB-XXX -xxxx-XX-XX「? – HumphreyBogart

+0

你會得到一個更好的答案,提供代碼,因爲很難確切地確定你的意思 –

0

這當然是可能的。這個正則表達式可以解決這個問題:

「AB-123-2011-07-09「.replace(/^AB-(\d+)-\d+-\d+-\d+$/, 「#$1「); 

它還會檢查給定的語法,並且字符串中沒有其他內容。

migg

1

下面的正則表達式將工作,但在這種情況下,我不認爲你需要在所有正則表達式(如@Eric已經顯示)。

"AB-123-2011-07-09".replace(/^AB-(\d+)-.*/, "#$1"); 

這將導致價值#123

http://jsfiddle.net/3XhbE/