जावास्क्रिप्ट - ओपेरा में एक हेक्स मान्य? जावास्क्रिप्ट, regex

यह फ़ंक्शन फ़ायरफ़ॉक्स, क्रोम, आईई 9 में काम करता है। ओपेरा में काम नहीं करता है।

function isValidHex(hex) { alert(hex);
var strPattern = /^#([0-9a-f]{1,2}){3}$/i; alert(strPattern.test(hex));
return strPattern.test(hex);
}

हेक्स जा रहा है वही है। StrPatter.test का परिणाम ओपेरा में झूठा रिटर्न देता है और फ़ायरफ़ॉक्स में सच है।

का परीक्षण किया।

#000000
#ffffff

कोई विचार?

उत्तर:

जवाब के लिए 2 № 1

यह regex गलत है। #1234 इस regex में भी सही होगा। उपयोगकर्ता regex /^#([a-fA-F0-9]{3}|[a-fA-F0-9]{6})$/


जवाब के लिए 2 № 2

यदि आप गुणक को चारों ओर स्वैप करते हैं, तो यह ओपेरा में भी काम करता है:

function isValidHex(hex) {
var objPattern = /^#([0-9a-f]{3}){1,2}$/i;
return objPattern.test(hex);
}

आप वैसे भी ऐसा करना चाहते हैं, ताकि आप तीन अंकों (यानी 3 या 3 + 3 वर्ण) के एक या दो समूहों से मेल खाते हों, न कि एक या दो अंकों के तीन समूह (यानी 1 + 1 + 1, 2 + 1 + 1 , 2 + 2 + 1 या 2 + 2 + 2 अक्षर)।

(ध्यान दें कि मैं चर से भी नाम बदलता हूं strPattern सेवा मेरे objPattern क्योंकि इसमें नियमित अभिव्यक्ति ऑब्जेक्ट होता है, स्ट्रिंग नहीं। यदि आप डेटा प्रकार निर्दिष्ट करने के लिए हंगेरियन नोटेशन का उपयोग कर रहे हैं, तो उपसर्ग को वास्तविक डेटा प्रकार से मेल खाना पड़ेगा, या यह केवल contraproductive है।)


संबंधित सवाल
सबसे लोकप्रिय