शब्द सीमाओं \b
या समान उपकरणों के कारण बहुत सारे लोगों के लिए नियमित अभिव्यक्तियाँ अधिक अनुकूल होंगी । शब्द सीमाओं होते हैं, जब से किसी 0-9
, a-z
, A-Z
, _
पर हैं उस तरफ अगले मैच के लिए, या जब लाइन या स्ट्रिंग के अंत या शुरुआत के लिए एक अक्षरांकीय चरित्र को जोड़ता है।
if (location.href.match(/(?:\b|_)franky(?:\b|_)))
यदि आप उपयोग करते हैं if(window.location.href.indexOf("sam")
, तो आपको दूसरे शब्दों के बीच flotsam
और same
, के लिए मैच मिलेंगे । tom
रेगेक्स के बिना, टमाटर और कल का मिलान करेगा।
इसे केस-सेंसिटिव बनाना उतना ही सरल है जितना कि इसे हटाना i
।
इसके अलावा, अन्य फिल्टर जोड़ना भी उतना ही आसान है
if (location.href.match(/(?:\b|_)(?:franky|bob|billy|john|steve)(?:\b|_)/i))
की बात करते हैं (?:\b|_)
। RegEx आमतौर पर परिभाषित _
करता है word character
इसलिए यह शब्द सीमा का कारण नहीं बनता है। इससे (?:\b|_)
निपटने के लिए हम इसका इस्तेमाल करते हैं। यह देखने के लिए कि क्या यह या तो मिल जाता है \b
या _
स्ट्रिंग के दोनों ओर।
अन्य भाषाओं को कुछ का उपयोग करने की आवश्यकता हो सकती है
if (location.href.match(/([^\wxxx]|^)(?:franky|bob|billy|john|steve)([^\wxxx]|$)/i))
//where xxx is a character representation (range or literal) of your language's alphanumeric characters.
यह सब कहने की तुलना में आसान है
var x = location.href // just used to shorten the code
x.indexOf("-sam-") || x.indexOf("-sam.") || x.indexOf(" sam,") || x.indexOf("/sam")...
// and other comparisons to see if the url ends with it
// more for other filters like frank and billy
अन्य भाषाओं के फ्लेवर रेगुलर एक्सप्रेशंस का समर्थन करते हैं, \p{L}
लेकिन जावास्क्रिप्ट ऐसा नहीं करता है, जो विदेशी पात्रों का पता लगाने के काम को बहुत आसान बना देगा। कुछ इस तरह[^\p{L}](filters|in|any|alphabet)[^\p{L}]
"window.location.contains is not a function"