/ / जावा स्क्रिप्ट regex समूह - जावास्क्रिप्ट, regex

जावा स्क्रिप्ट regex समूह - जावास्क्रिप्ट, regex

मैं जावा स्क्रिप्ट regex में एक नौसिखिया हूँ। मुझे जावा स्क्रिप्ट रेगेक्स का उपयोग करके अपने प्रोजेक्ट में वेब पेज में से किसी एक फ़ील्ड को सत्यापित करने की आवश्यकता है। - फ़ील्ड को छोड़कर किसी विशेष वर्ण को अनुमति नहीं देनी चाहिए ("/")। - इस क्षेत्र को किसी भी शब्द को "/" से शुरू करने या "/". लेकिन बीच में" / "के साथ समाप्त होने की अनुमति नहीं दी जानी चाहिए। - यह भी एक प्रतिबंध है कि इसे लगातार एक से अधिक स्लैश की अनुमति नहीं देनी चाहिए। --- क्षेत्र को एकल पात्रों को भी पास करने की अनुमति देनी चाहिए

मूल रूप से जिन शब्दों की अनुमति है वे हैं: -

data
data/sdsd
d/s/s/sss

जो अनुमति नहीं दे रहे हैं: -

/data
or //data
or data/
or data////
or data/////data

मैं दो regex के बावजूद 1। (^[w]+.*[^/]$) iee अल्फान्यूमेरिक कैरेक्टर से शुरू होने वाले शब्द की अनुमति दें और चेकिट को शब्द को "/"।

मुझे पता है कि यह एक अच्छा regex नहीं है (इसके बीच में "बहुगुणित संख्या की अनुमति होगी"/"विशेष पात्रों को भी ध्यान नहीं दिया जाता हैके) लेकिन इसके साथ मुख्य समस्या यह है कि यह एकल चरित्र को अस्वीकार करता है, इसलिए कृपया कोई भी इस वर्ण को संशोधित करने में मेरी मदद कर सकता है ताकि एकल पात्रों को अनुमति मिल सके, यह बहुत मददगार होगा

  1. [w]+([/][w]+)* अर्थात। मैं एक रेगेक्स बनाना चाहता था जो अल्फानंबरिक वर्णों की पुनरावृत्ति की किसी भी संख्या को अनुमति देगा, लेकिन यदि यह स्लैश देखता है तो सुनिश्चित करें कि उसके बाद अल्फान्यूरिक वर्ण है। और मैंने इंटरनेट में पढ़ा है कि "()"अक्षरों को समूहित करने के लिए प्रयोग किया जाता है इसलिए मैंने सोचा ([/][w]+)* समूह के रूप में कार्य करेगा जो अनुमति देगा: -

    / एस, / एसएसएस, / दादादा

और मेटाएक्टेक्टर "*"यह सुनिश्चित करेगा कि इसे कई बार दोहराया जाएगा। लेकिन इसके साथ समस्या यह समूह नहीं है [/] तथा [w]+, बल्कि यह शब्दों को "/" कृपया अगर कोई मेरी मदद कर सकता है तो यह बहुत मददगार होगा। अग्रिम में Thnaks !!

उत्तर:

उत्तर № 1 के लिए 4

यह संभवतः सबसे कुशल नहीं है, लेकिन इसे आपको शुरू करना चाहिए। जावास्क्रिप्ट का रेगेक्स इंजन नहीं दिखता है, जिससे यह थोड़ा और जटिल हो जाता है।

^([a-z]+([a-z]|/(?![/]))*[a-z]|[a-z])$

http://regex101.com/r/iA9kC6

आप शायद केस-असंवेदनशील संशोधक का उपयोग करना चाहेंगे, इसलिए परिणाम (साथ / delimiters) इस तरह दिखता है:

/^([a-z]+([a-z]|/(?![/]))*[a-z]|[a-z])$/i

उत्तर № 2 के लिए 1

मुझे लगता है कि आपकी समस्या का समाधान करने में मदद मिलेगी। समूह पर आलसी क्वांटिफायर और पूरी चीज एंकर करने में मदद करने के लिए शुरुआत और समापन संदर्भ काम करने लगते हैं।

/^w([//]?w+)*?$/ig

जवाब के लिए 0 № 3

इससे आपकी समस्या का समाधान हो जाना चाहिए:

^(w(([/]?w)*w)?)$

Regexp कहते हैं:

एक मैच हमेशा एक शब्द-चरित्र से शुरू होता है।

यदि 1 से अधिक वर्ण हैं, तो अंतिम व्यक्ति को शब्द-चरित्र भी होना चाहिए।

बीच में सभी chacaters या तो एक हैं /, एक शब्द चरित्र के बाद, या केवल एक शब्द-चरित्र, लघु: ([/]?w)*

प्लस जोड़ने से आपको कुछ प्रदर्शन सुधार मिल सकते हैं:

^(w(([/]?w+)*w)?)$