javascript जावास्क्रिप्ट regex OR |




numbers operators (4)

^(\d{1,5}|\d{1,5}\.\d{1,4}|\.\d{1,4})$ डबल के साथ | यहां ठीक काम करता है https://regex101.com/r/jTVW2Z/1

मैं वर्तमान में खोज रहा हूं कि इस एप्लिकेशन के लिए एक रीजेक्स सही तरीके से कैसे लिखूं:

1 - बिना नंबर "।" 1 से 5 अंकों की लंबाई => /^(\d{1,5})$/
2 - "संख्या।" "।" से पहले 1 से 5 अंकों की लंबाई के साथ और "।" के बाद 1 से 4 अंक या "।" "।" के बाद 1 से 4 अंकों की लंबाई के साथ => / /^(\d{1,5})?\.?(\d{1,4})?$/ = /^(\d{1,5})?\.?(\d{1,4})?$/

मैंने एक या ऑपरेटर "|" का प्रयोग करने की कोशिश की, लेकिन यह काम नहीं करती है; (=> /^(\d{1,5})?\.?(\d{1,4})?$|^(\d{1,5})$/ मुझे समझ में नहीं आ रहा है कि, यह मेरी पहली जावा स्क्रिप्ट regex है और मुझे ठीक से "|" ऑपरेटर का उपयोग करने के लिए निश्चित नहीं है

उत्तर के बाद मैं 1 regex के साथ प्राप्त करना चाहूंगा:

123 => ok
12345 => ok
123456 => not ok
12345.2156 => ok
123456.12 => not ok
12345.12345 => not ok

आपकी मदद के लिए बहुत बहुत शुक्रिया। आपका दिन शुभ हो।

एटीन


या ऑपरेटर का उपयोग करने के लिए यदि आप मान से मेल खाते चाहते हैं, तो आपको कोष्ठक में regex को लपेटकर / ( /(...)/ और एक पाइप के साथ reg को विभाजित करना चाहिए (/... /(...|...)/

const checkNum = s => console.log(s, /^(\d{1,5}|\d{1,5}\.\d{4})*$/.test(s))

checkNum('55555.4444')
checkNum('88888')
checkNum('88888.22')


Array#split साथ बेहतर उपयोग करें यह उसी परिणाम देता है जो आप regex पैटर्न से अपेक्षा करते हैं।

function check(a){
 var c= a.toString().split(".");
   return c[1]? ((c[0].length <= 5) && (c[1].length <= 4)) ? true : false : c[0].length <= 5 ? true : false;
}
console.log(check(123))
console.log(check(12345))
console.log(check(123456))
console.log(check(12345.2156))
console.log(check(123456.12))
console.log(check(12345.12345))


आप दूसरे भाग को वैकल्पिक के रूप में देख सकते हैं

function check(v) {
    return /^(?=.)\d{0,5}(\.\d{1,4})?$/.test(v);
}

console.log(['', '.123', 123, 12345, 12345.2156, 123456, 123456.12, 12345.12345].map(check));





operators