आप रिक्ति के बारे में regex देखो के arounds चाहते हैं।एक अन्य सवाल का जवाब यहाँ एक सकारात्मक देखो आगे का सुझाव दिया, हालांकि मैं डबल नकारात्मक जाना चाहते हैं:
(?<!\S)(\:\)|\:\(|<3|\:\/|\:-\/|\:\||\:p)(?!\S)
JavaScript का समर्थन नहीं करता है (?<!pattern)
, look-behind can be mimicked:
test_string.replace(/(\S)?(\:\)|\:\(|<3|\:\/|\:-\/|\:\||\:p)(?!\S)/,
function($0, $1) { return $1 ? $0 : replacement_text; });
सभी मैं अपने कोड उपसर्ग था था (?<!\S)
के साथ (?!\S)
के साथ सामने और प्रत्यय में। उपसर्ग यह सुनिश्चित करता है कि आप गैर-व्हाइटस्पेस वर्ण का पालन न करें, इसलिए केवल वैध प्रमुख प्रविष्टियां रिक्त स्थान या कुछ भी नहीं हैं (रेखा की शुरुआत)। प्रत्यय एक ही चीज करता है, यह सुनिश्चित करता है कि आप गैर-व्हाइटस्पेस चरित्र के बाद नहीं हैं। यह more thorough regex walk-through भी देखें।
प्रश्न की टिप्पणियों में से एक स्वयं ही \b
(शब्द सीमा) मार्कर का सुझाव दे रहा था। मैं इनकी सिफारिश नहीं करता हूं। वास्तव में, यह सुझाव आप जो चाहते हैं उसके विपरीत करेंगे; \b:/
वास्तव में http://
से मेल खाता है क्योंकि p
और :
के बीच एक शब्द सीमा है। इस तरह की तर्क \B
(शब्द सीमा नहीं) का सुझाव देगा, उदाहरण के लिए \B:/\B
। यह अधिक पोर्टेबल है (यह बहुत सारे रेगेक्स पार्सर्स के साथ काम करता है जबकि देखो-आसपास नहीं है), और आप इसे उस मामले में चुन सकते हैं, लेकिन मैं लुक-आसपास पसंद करता हूं।
स्रोत
2015-01-22 02:57:00
इसे कई रेगेक्स में क्यों विभाजित नहीं किया गया है? साथ ही, आप क्या कर सकते हैं सीमाओं के साथ मेल खाता है, उदाहरण के लिए '/ \ b: \) \ b /' – elclanrs
यदि मुझे सही याद है, तो [Twemoji] (https://github.com/twitter/twemoji/) और [ Emojione] (https://github.com/Ranks/emojione/tree/master/lib/js) जेएस कोड को उनके छवि सेट के साथ करने के लिए प्रदान करते हैं और गीथूब, एनपीएम, बॉवर इत्यादि पर एक ही चीज़ के दर्जनों कार्यान्वयन होते हैं। – Crissov