दिलचस्प पोस्ट
WPF: स्वत: पूर्ण पाठ बॉक्स, … फिर से .NET में एक स्ट्रिंग से यूआरएल पैरामीटर प्राप्त करें लक्ष्य … `पॉड / पॉड। एक्सकोनफ़िग में परिभाषित` OTHER_LDFLAGS` बिल्ड सेटिंग ओवरराइड करता है एडीबी शैल इनपुट इवेंट्स क्या आप एक एम्बेडेड नल के साथ एक std :: स्ट्रिंग का निर्माण करते हैं? यह निर्धारित करने के लिए कि जब एक गिट शाखा बनाई गई थी? जावा प्रयास / कैच प्रदर्शन, क्या इसे न्यूनतम रखने की कोशिश की जाती है? आप C ++ में निर्भर नाम कैसे समझते हैं एक दृश्य नियंत्रक से किसी दूसरे स्विफ्ट का उपयोग कैसे करें Spring @ExceptionHandler @ResponseBody के साथ काम नहीं करता है क्या मुझे जेएस पुस्तकालयों के लिए Google API के बादल से लिंक करना चाहिए? राज्य मशीन ट्यूटोरियल लिपियों के साथ लिनक्स में स्टैक साइज़ बढ़ाएं क्या "यह" कभी जावा में निरर्थक हो सकता है? Std :: फ़ंक्शन कॉल हस्ताक्षर से टेम्पलेट तर्क कम करें

सीएसएस पहचानकर्ताओं के लिए अनुमत वर्ण

सीएसएस पहचानकर्ता id और class लिए (पूर्ण) मान्य / अनुमत वर्णबद्ध वर्ण क्या हैं?

क्या कोई नियमित अभिव्यक्ति है जो मैं इसके खिलाफ मान्य करने के लिए उपयोग कर सकता हूं? यह ब्राउज़र अज्ञेयवादी है?

वेब के समाधान से एकत्रित समाधान "सीएसएस पहचानकर्ताओं के लिए अनुमत वर्ण"

अक्षरसेट कोई फर्क नहीं पड़ता अनुमत अक्षरों के बारे में अधिक महत्व है सीएसएस विनिर्देश देखें प्रासंगिकता का हवाला दिया गया है:

सीएसएस में, पहचानकर्ता (तत्व के नाम, वर्ग और चयनकर्ताओं में आईडी सहित) में केवल अक्षर [a-zA-Z0-9] और आईएसओ 10646 वर्ण U+00A1 और अधिक हो सकते हैं, साथ ही हाइफ़न ( - ) और अंडरस्कोर ( _ ); वे किसी अंक के साथ शुरू नहीं कर सकते हैं, या एक हाइफ़न अंक के बाद शुरू नहीं कर सकते। पहचानकर्ता में बच गए पात्रों और किसी भी आईएसओ 10646 वर्ण को एक संख्यात्मक कोड (अगले आइटम देखें) के रूप में भी शामिल किया जा सकता है। उदाहरण के लिए, पहचानकर्ता "B&W?" "B\&W\?" रूप में लिखा जा सकता है "B\&W\?" या "B\26 W\3F"

अद्यतन : regex प्रश्न के रूप में, आप यहां व्याकरण पा सकते हैं:

 ident -?{nmstart}{nmchar}* 

जिसमें भागों शामिल हैं:

 nmstart [_a-z]|{nonascii}|{escape} nmchar [_a-z0-9-]|{nonascii}|{escape} nonascii [\240-\377] escape {unicode}|\\[^\r\n\f0-9a-f] unicode \\{h}{1,6}(\r\n|[ \t\r\n\f])? h [0-9a-f] 

इसका एक जावा रेगेक्स में अनुवाद किया जा सकता है (मैं केवल कोष्ठकों को जोड़ता है और बैकस्लैश भाग चुका हूं):

 String h = "[0-9a-f]"; String unicode = "\\\\{h}{1,6}(\\r\\n|[ \\t\\r\\n\\f])?".replace("{h}", h); String escape = "({unicode}|\\\\[^\\r\\n\\f0-9a-f])".replace("{unicode}", unicode); String nonascii = "[\\240-\\377]"; String nmchar = "([_a-z0-9-]|{nonascii}|{escape})".replace("{nonascii}", nonascii).replace("{escape}", escape); String nmstart = "([_a-z]|{nonascii}|{escape})".replace("{nonascii}", nonascii).replace("{escape}", escape); String ident = "-?{nmstart}{nmchar}*".replace("{nmstart}", nmstart).replace("{nmchar}", nmchar); System.out.println(ident); // The full regex. 

अद्यतन 2 : ओह, आप अधिक एक PHP'er रहे हैं, ठीक है मुझे लगता है कि आप कैसे / जहां str_replace करने के लिए कर str_replace ?

किसी को भी कुछ के लिए थोड़ा और मोड़-कुंजी की तलाश में पूर्ण अभिव्यक्ति, प्रतिस्थापित और सभी @ BalusC के उत्तर से है:

 /-?([_a-z]|[\240-\377]|([0-9a-f]{1,6}(\r\n|[ \t\r\n\f])?|[^\r\n\f0-9a-f]))([_a-z0-9-]|[\240-\377]|([0-9a-f]{1,6}(\r\n|[ \t\r\n\f])?|[^\r\n\f0-9a-f]))*/ 

और DEFINE का उपयोग करते हुए, मुझे थोड़ा और पठनीय लगता है:

 /(?(DEFINE) (?P<h> [0-9a-f] ) (?P<unicode> (?&h){1,6}(\r\n|[ \t\r\n\f])? ) (?P<escape> ((?&unicode)|[^\r\n\f0-9a-f])* ) (?P<nonascii> [\240-\377] ) (?P<nmchar> ([_a-z0-9-]|(?&nonascii)|(?&escape)) ) (?P<nmstart> ([_a-z]|(?&nonascii)|(?&escape)) ) (?P<ident> -?(?&nmstart)(?&nmchar)* ) ) (?: (?&ident) )/x 

संयोग से, मूल नियमित अभिव्यक्ति (और @ मानव के अंशदान) में कुछ दुष्ट बच पात्र थे [ नाम में]।

इसके अलावा, यह ध्यान दिया जाना चाहिए कि बिना कच्चे regex, DEFINE , DEFINE अभिव्यक्ति के रूप में तेजी से लगभग 2x चलाता है, केवल एक यूनिकोड वर्ण की पहचान करने के लिए ~ 23 कदम लेते समय, जबकि बाद में ~ 40 लेता है।

यह केवल बुलस सी उत्तर के लिए एक योगदान है। यह वह जावा कोड का PHP संस्करण है, जिसे मैंने प्रदान किया है, मैं इसे परिवर्तित कर लिया और मैंने सोचा कि किसी और को यह उपयोगी हो सकता है।

 $h = "[0-9a-f]"; $unicode = str_replace( "{h}", $h, "\{h}{1,6}(\r\n|[ \t\r\n\f])?" ); $escape = str_replace( "{unicode}", $unicode, "({unicode}|\[^\r\n\f0-9a-f])"); $nonascii = "[\240-\377]"; $nmchar = str_replace( array( "{nonascii}", "{escape}" ), array( $nonascii, $escape ), "([_a-z0-9-]|{nonascii}|{escape})"); $nmstart = str_replace( array( "{nonascii}", "{escape}" ), array( $nonascii, $escape ), "([_a-z]|{nonascii}|{escape})" ); $ident = str_replace( array( "{nmstart}", "{nmchar}" ), array( $nmstart, $nmchar ), "-?{nmstart}{nmchar}*"); echo $ident; // The full regex.