2009-08-04 10 views
7

सुई और घास के मैदान को देखते हुए ... मैं सुई के चारों ओर बोल्ड टैग रखना चाहता हूं। तो मैं प्रतिस्थापन() के साथ क्या regex अभिव्यक्ति का उपयोग करेंगे? मैं अंतरिक्ष delimeter होना चाहता हूँ और मैं खोज मामला हो के प्रति असंवेदनशीलजावास्क्रिप्ट रेगेक्स: रेगेक्स के साथ विशिष्ट शब्दों को बोल्ड कैसे करें?

ऐसा कहते सुई "गाय" है और भूसे के ढेर

cows at www.cows.com, milk some COWS 

<b>cows</b> at www.cows.com, milk some <b>COWS</b> 

भी में बदल जाएगा चाहते हैं कीवर्ड में रिक्त स्थान होना चाहिए ताकि कीवर्ड "mgmt कौन है" ...

great band. who is mgmt btw? 

होगा में

great band. <b>who is mgmt</b> btw? 

धन्यवाद

उत्तर

12

यहाँ आप जो खोज रहे हैं करने के लिए एक regex है:

(^|\s)(cows)(\s|$) 

जे एस में, प्रतिस्थापन इसलिए की तरह है:

myString.replace(/(^|\s)(cows)(\s|$)/ig, '$1<b>$2</b>$3'); 

एक पुन: प्रयोज्य समारोह में बड़े करीने से ऊपर लपेटा:

function updateHaystack(input, needle) { 
    return input.replace(new RegExp('(^|\\s)(' + needle + ')(\\s|$)','ig'), '$1<b>$2</b>$3'); 
} 

var markup = document.getElementById('somediv').innerHTML; 
var output = updateHaystack(markup, 'cows'); 
document.getElementById('somediv').innerHTML = output; 
+0

+1 काम करना चाहिए । :) – Amber

+0

वहाँ एक टाइपो है? समारोह boldKeywords (कीवर्ड, भूसे के ढेर) {के लिए \t (वर ग = 0; ग $ 2 $ 3'); \t} \t रिटर्न हैस्टैक; } किसी कारण से कोड कुछ भी बोल्ड नहीं करता है। धन्यवाद – rawrrrrrrrr

+0

अपडेट हैस्टैक ('www.cows.com पर गायों, कुछ गाय दूध', 'गायों'); कुछ भी बोल्ड नहीं करता है, लेकिन अपडेट हैस्टैक ('www.cows पर गायों।कॉम, दूध कुछ गाय ',' गाय '); गायों को गाय एस – rawrrrrrrrr

1
findstring: /(^|\s)(cows)(\s|$)/ig 
newstring: '$1<b>$2</b>$3' 

\ b मार्कर "शब्द सीमाओं" के लिए कर रहे हैं बारी;/ig झंडे क्रमशः केस-अनदेखी और वैश्विक मिलान के लिए हैं।

नए स्ट्रिंग टेक्स्ट में() कैप्चर और फिर $ 1/$ 2/$ 3 का उपयोग इतना है कि जो कुछ भी मिलान किया गया था उसका पूंजीकरण और अंतर संरक्षित किया जाएगा।

-1
var needle = 'cows'; 

var regexp = new RegExp('(^|\s)('+needle+')(\s|$)', 'ig'); 

var old_string = 'cows at www.cows.com, milk some COWs'; 

var new_string = old_string.replace(regexp, '<b>$1$2$3</b>'); 
+0

आपका उदाहरण काम नहीं करेगा, क्योंकि इसे पहले से सुई का पालन करने और सुई का पालन करने की आवश्यकता होती है, जो आपके पुराने_स्ट्रिंग में 'गाय' के किसी भी उदाहरण के मामले में नहीं है। – Amber

+0

उन्होंने कहा कि वह अंतरिक्ष को डिलीमीटर के रूप में चाहते थे। इसे तारों की शुरुआत और अंत के साथ काम करने के लिए यह '(^ | \ s)' + सुई + '(\ s | $)' परीक्षण नहीं किया जा सकता है, लेकिन मुझे लगता है कि मेरे अंतिम उत्तर को थोड़ा और आगे लेने के लिए –

9

जो लोग नहीं चाहते हैं टी स्पेस डेलीमीटर के रूप में, बस \s का उपयोग न करें।

function updateHaystack(input, needle) 
{ 
return input.replace(new RegExp('(^|)(' + needle + ')(|$)','ig'), '$1<b>$2</b>$3'); 
} 

मेरे लिए काम किया।

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