2009-10-14 25 views
8

के बाद मैं एक स्ट्रिंग की तरहजावास्क्रिप्ट मैच सबस्ट्रिंग regexp

something30-mr200 

कुछ देखने के लिए है मैं mr (मूल रूप से # श्री के बाद) के बाद सब कुछ प्राप्त करना चाहते हैं * हमेशा वहाँ -mr

होने जा रहा है

किसी भी मदद की सराहना की जाएगी।

उत्तर

0

-mr की स्थिति ढूँढने के बारे में क्या, फिर वहां से सबस्ट्रिंग प्राप्त करें + 3?

यह regex नहीं है, लेकिन आपका विवरण दिया गया काम लगता है?

4
var result = "something30-mr200".split("mr")[1]; 

या

var result = "something30-mr200".match(/mr(.*)/)[1]; 
+0

आप स्ट्रिंग '" mr' बंद करने के लिए भूल गया –

+0

धन्यवाद, अब – Kamarey

4

क्यों बस नहीं:

-mr(\d+) 

फिर कब्जा समूह की सामग्री मिल रहा है?

2

के बारे में क्या:

function getNumber(input) { // rename with a meaningful name 
    var match = input.match(/^.*-mr(\d+)$/); 

    if (match) { // check if the input string matched the pattern 
    return match[1]; // get the capturing group 
    } 
} 

getNumber("something30-mr200"); // "200" 
+0

वाह तय, लगभग समान समाधान, व्यावहारिक रूप से एक ही समय में। चीयर्स :) – treznik

+1

क्या आप वाकई 'मैच [1]' का परीक्षण करना चाहते हैं? इसका मूल्यांकन * झूठा * होगा यदि यह '0' है। – Gumbo

+1

@ गंबो: यह मूल्यांकन नहीं करेगा झूठी, क्योंकि मैचों ** स्ट्रिंग्स ** नहीं ** नंबर **, i यदि मिलान [1] एक खाली स्ट्रिंग है तो टी केवल तभी मूल्यांकन करेगा। – CMS

18

आप एक बार्ट की तरह एक regexp उपयोग कर सकते हैं आप दे दी है, लेकिन मैं नहीं बल्कि की जगह से मिलान का उपयोग, के बाद से मामले में एक नहीं मिलता है सुझाव देते हैं, परिणाम पूरी स्ट्रिंग है प्रतिस्थापित करते समय, मिलान का उपयोग करते समय शून्य, जबकि अधिक तार्किक लगता है। (हालांकि एक सामान्य के रूप में)।

functiong getNumber(string) { 
    var matches = string.match(/-mr([0-9]+)/); 
    return matches[1]; 
} 
getNumber("something30-mr200"); 
1

यह आप के लिए काम कर सकते हैं:।

कुछ इस तरह चाल करना होगा

// Perform the reg exp test 
new RegExp(".*-mr(\d+)").test("something30-mr200"); 
// result will equal the value of the first subexpression 
var result = RegExp.$1; 
+0

पहले '। *' को शामिल करने की आवश्यकता नहीं है और हाइफ़न को कोई भागने की आवश्यकता नहीं है। यह भी काम करता है: '" -एमआर (। *) "'। लेकिन '। *' खतरनाक है: यदि '-mr" '' * के बाद बहुत अधिक टेक्स्ट है, तो वह "खाएगा"। बेशक, ओपी वास्तव में स्पष्ट नहीं था कि '-mr "' के बाद क्या पाठ आ सकता है। –

+0

यह एक अच्छा मुद्दा है। मैं मान रहा था कि ओपी "-एमआर" के बाद सबकुछ चाहता है। मैंने हाइफ़न से पहले भागने को हटाने के लिए कोड को संशोधित किया और सबएक्सप्रेस को अंकों तक सीमित कर दिया। मैं किसी भी चीज से ज्यादा आदत से बचता हूं। :) –

संबंधित मुद्दे