এইচ এইচ: এমএম সময় বিন্যাসের সাথে মিলে যাওয়ার জন্য নিয়মিত প্রকাশ


165

আমি এইচএইচ: এমএম ফর্ম্যাটে মেলানো সময়ের জন্য একটি রেজিপেক্স চাই। আমার যা আছে তা এখানে রয়েছে এবং এটি কার্যকর করে:

^[0-2][0-3]:[0-5][0-9]$

এটি 00:00 থেকে 23:59 অবধি সমস্ত কিছুর সাথে মেলে।

যাইহোক, আমি এটি পরিবর্তন করতে চাই তাই 0:00 এবং 1:00, ইত্যাদির সাথে মেলাও হয় 00:00 এবং 01:30। অর্থাৎ এইচএইচ: এমএম পাশাপাশি এইচ: এমএম এর সাথে মেলে বামতম অঙ্কের digitচ্ছিকটি তৈরি করতে।

এই ধারণাটি কীভাবে পরিবর্তন করবেন? আমার এটি জাভাস্ক্রিপ্ট পাশাপাশি পিএইচপি করার জন্য কাজ করতে হবে।


15
প্রকৃতপক্ষে আপনার আসল রেজিএক্সপ্যাক্ট বৈধ সময়ের মানগুলির পুরো পরিসরের সাথে মেলে না, যেমন 17:00
ডেভিড ক্লার্ক

উত্তর:


366

আপনার মূল নিয়মিত প্রকাশের ত্রুটি রয়েছে: এটি 04:00উদাহরণের সাথে মেলে না ।

এটি আরও ভাল কাজ করতে পারে:

^([0-1]?[0-9]|2[0-3]):[0-5][0-9]$

45
এই রেজিপ্যাক্স শূন্যের দিকে না রেখে সময়ের জন্য। শীর্ষস্থানীয় শূন্যের সাথে সময়ের জন্য রেজিপ্যাক্স হল^([0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$
সের্গো

15
@ সার্জিও দয়া করে তাঁর উত্তরটি আরও মনোযোগ সহকারে পড়ুন। তার উত্তর অগ্রণী শূন্য এবং বাইরে উভয়ের পক্ষে।
আলেকজান্ডার

11
কিছুটা সংক্ষিপ্ত রূপটি^(?:\d|[01]\d|2[0-3]):[0-5]\d$
বিলি জো

2
সি # তেও দুর্দান্ত কাজ করে।
রিচার্ড ইভ

10
@ সার্গো এর কি ^ হওয়া উচিত নয় (0 [0-9] | 1 [0-9] | 2 [0-9]): [0-5] [0-9] $?
মার্টিন

57

সময়ের জন্য নিয়মিত প্রকাশ

  • এইচএইচ: এমএম 12-ঘন্টা ফর্ম্যাট, leadingচ্ছিক নেতৃস্থানীয় 0

    /^(0?[1-9]|1[0-2]):[0-5][0-9]\d$/
  • এইচএইচ: এমএম 12-ঘন্টা ফর্ম্যাট, alচ্ছিক নেতৃস্থানীয় 0, বাধ্যতামূলক মেরিডিয়ামস (এএম / প্রধানমন্ত্রী)

    /((1[0-2]|0?[1-9]):([0-5][0-9]) ?([AaPp][Mm]))/
  • এইচ এইচ: এমএম 24-ঘন্টা শীর্ষে 0 সহ

    /^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/
  • এইচএইচ: এমএম 24-ঘন্টা ফর্ম্যাট, alচ্ছিক নেতৃস্থানীয় 0

    /^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/
  • এইচ এইচ: এমএম: এসএস শীর্ষস্থানীয় 0 সহ 24 ঘন্টা ফর্ম্যাট

    /(?:[01]\d|2[0-3]):(?:[0-5]\d):(?:[0-5]\d)/

রেফারেন্স এবং ডেমো


4
ধন্যবাদ! এই উত্তরটি শীর্ষে থাকা উচিত।
মার্ক

কোনও কারণ এইচএইচ: এমএম 24-ঘন্টা নেতৃত্বের সাথে 0 হয় না ^([0-2][0-3]|[0-1][0-9]):[0-5][0-9]+$?
ম্যাকোভি ভ্লাদ

কারণ উত্তরে রেজেক্স ভালভাবে কাজ করে। এবং আপনি যে মন্তব্য করেছেন সেটিও কাজ করে। এগুলির মধ্যে যে কোনও একটি নির্দ্বিধায় ব্যবহার করুন। :)
নিকেত পাঠক

উপরোক্ত রেজেক্সের সাথে স্ট্রিংয়ের সাথে 12 ঘন্টা (সকাল / সন্ধ্যা with টায়) মেলে এমন লোকদের জন্য, মনে রাখবেন যে রেজেক্সের বিরুদ্ধে "13:00 অপরাহ্ন" পরীক্ষা করা সত্য (কিছু মান) ফিরে আসবে কারণ স্ট্রিংয়ের "3:00 pm" অংশটি বৈধ। আমি নিম্নলিখিতটি ব্যবহার করে সমস্যার সমাধান করেছি যদি বিবৃতিটি res = value.match (regex) দেয়; যদি (res && Res [0] === মান) doSomething ();
তাহা রেহমান সিদ্দিকী

49

উপরের কেউই আমার পক্ষে কাজ করেনি। শেষ পর্যন্ত আমি ব্যবহার করেছি:

^([0-1]?[0-9]|2[0-3]):[0-5][0-9]$ (js engine)

লজিক:

প্রথম সংখ্যাটি (ঘন্টা) হয়: 0 এবং 19 -> [0-1]?[0-9](একক সংখ্যার মঞ্জুরি দেওয়া)
বা
20 - 23 -> এর মধ্যে একটি সংখ্যা2[0-3]

দ্বিতীয় সংখ্যা (মিনিট) সর্বদা 00 এবং 59 -> এর মধ্যে একটি সংখ্যা [0-5][0-9](একক অঙ্কের অনুমতি দেয় না)


8
আপনার প্রথম বর্গাকার বন্ধনীতে ড্যাশ লাগবে না, [01]ঠিক তেমনি কাজ করে;)
Czechnology

3
এই উত্তরটি কেবলমাত্র 12 ঘন্টা সময় (leading ^(0?[1-9]|1[0-2]):[0-5][0-9]$
চ্ছিক

^([0-1][0-9]|2[0-3]):[0-5][0-9]$একটি শীর্ষস্থানীয় শূন্যকে বাধ্য করার জন্য
মানান মেহতা



3

আশ্চর্যজনকভাবে আমি দেখতে পেলাম যে এগুলি সমস্তই এটিকে পুরোপুরি আবরণ করে না, কারণ তারা 0: 0-এর মধ্যরাতে সংক্ষিপ্ত আকারের জন্য কাজ করে না এবং কয়েকজন 00:00-এর জন্যও কাজ করে না, আমি নিম্নলিখিতটি ব্যবহার করেছি এবং পরীক্ষা করেছি:

^([0-9]|0[0-9]|1?[0-9]|2[0-3]):[0-5]?[0-9]$

2

আপনি এই নিয়মিত প্রকাশটি ব্যবহার করতে পারেন:

^(2[0-3]|[01]?[0-9]):([1-5]{1}[0-9])$

আপনি যদি 00:00 বাদ দিতে চান তবে আপনি এই ভাবটি ব্যবহার করতে পারেন

^(2[0-3]|[01]?[0-9]):(0[1-9]{1}|[1-5]{1}[0-9])$

দ্বিতীয় প্রকাশটি ভাল বিকল্প কারণ বৈধ সময়টি হল 00:01 থেকে 00:59 বা 0:01 থেকে 23:59। আপনি আপনার প্রয়োজন অনুসারে এর যে কোনওটি ব্যবহার করতে পারেন। Regex101 লিঙ্ক


প্রথম প্রকাশটি 00: 05 গ্রহণ করে না । কিন্তু ধন্যবাদ. আমি যে বৈধতাটি খুঁজছিলাম তার দিকে নিয়ে যায়।
জাজ

2

মিলগুলি:

2: 9
2:09
2:59
02: 9
02:09
02:59
23:59

এটা ব্যবহার করো:

^([0-9]|0[0-9]|1[0-9]|2[0-3]):([0-9]|[0-5][0-9])$

2: 9 বা 02: 9 সময়টি কি ধরণের?
বনাম 9

উদাহরণস্বরূপ সি # তে ডেটটাইম অবজেক্টটিকে স্ট্রিংয়ে রূপান্তর করার জন্য অনেকগুলি বিকল্প রয়েছে। DateTime date1 = new DateTime(2008, 1, 1, 6, 9, 1); Console.WriteLine(date1.ToString("H:mm:ss", CultureInfo.InvariantCulture)); // Displays 6:09:01 । আরও তথ্যের জন্য লিঙ্কটি দেখুন
পেডরাম আহমদপুর

1

আপনি যেমন বাম সবচেয়ে বিট optionচ্ছিক জিজ্ঞাসা করেছেন, আমি বেশিরভাগ এবং ডান সর্বাধিক বিট alচ্ছিকও করেছি, এটি পরীক্ষা করে দেখুন

^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]?$

এর সাথে মেলে

0:0 
00:00
00:0 
0:00
23:59
01:00
00:59

লাইভ লিঙ্কটি এখানে উপলব্ধ


0

আপনি নিম্নোক্ত রেজেক্স ব্যবহার করতে পারেন:

^[0-1][0-9]:[0-5][0-9]$|^[2][0-3]:[0-5][0-9]$|^[2][3]:[0][0]$

0

ঘোষণা

private static final String TIME24HOURS_PATTERN = "([01]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]";

public boolean validate(final String time) {
    pattern = Pattern.compile(TIME24HOURS_PATTERN);
    matcher = pattern.matcher(time);
    return matcher.matches();
}

স্ট্রিং যখন নিয়মিত এক্সপ্রেশনের সাথে মেলে তখন এই পদ্ধতিটি "সত্য" প্রত্যাবর্তন করে।


0

উপরে মনীষ এম ডেমব্লানির অবদানের জন্য সামান্য পরিবর্তনটি সকাল 4 টা হ্যান্ডেল করে (আমার অ্যাপ্লিকেশনটিতে আমার এটির প্রয়োজন নেই বলে আমি সেকেন্ডের বিভাগটি থেকে মুক্তি পেয়েছি)

^(([0-1]{0,1}[0-9]( )?(AM|am|aM|Am|PM|pm|pM|Pm))|(([0]?[1-9]|1[0-2])(:|\.)[0-5][0-9]( )?(AM|am|aM|Am|PM|pm|pM|Pm))|(([0]?[0-9]|1[0-9]|2[0-3])(:|\.)[0-5][0-9]))$

হ্যান্ডলগুলি: 4am 4 am 4:00 4:00 am 4:00 pm 4.30 am ইত্যাদি ..


1
AM|am|aM|Am|PM|pm|pM|Pm=[AaPp][Mm]
এড মর্টন

0

নীচের রেজেক্স এইচ: মিমি ফর্ম্যাটটি বৈধ করতে সহায়তা করবে

^([0-1][0-9]|2[0-3]):[0-5][0-9]$

-1

খনিটি হ'ল:

^(1?[0-9]|2[0-3]):[0-5][0-9]$

এটি অনেক খাটো

এটি বেশ কয়েকটি উদাহরণ দিয়ে পরীক্ষিত হয়েছে

ম্যাচ:

  • 00:00
  • 7:43
  • 07:43
  • 19:00
  • 18:23

এবং কোনও অবৈধ উদাহরণের সাথে মেলে না যেমন 25:76 ইত্যাদি ...


09:30মেলে না
সবুজ

আপনার নিজস্ব উদাহরণগুলি 00:00 এবং 07:43 মিলছে না।
ক্রিশ্চিয়ান ওয়েস্টারবিক

-1

আপনি নিম্নলিখিত চেষ্টা করতে পারেন

^\d{1,2}([:.]?\d{1,2})?([ ]?[a|p]m)?$

এটি নিম্নলিখিত নিদর্শনগুলি সনাক্ত করতে পারে:

2300 
23:00 
4 am 
4am 
4pm 
4 pm
04:30pm 
04:30 pm 
4:30pm 
4:30 pm
04.30pm
04.30 pm
4.30pm
4.30 pm
23:59 
0000 
00:00

-1

এই ব্যবহারকারীর দ্বারা নির্দিষ্ট টাইমস্ট্যাম্প সন্ধানের জন্য আমি নির্মিত এই মাস্টারফুল টাইমস্ট্যাম্প ডিটেক্টর রেজেক্সটি পরীক্ষা করে দেখুন, এতে কী কী থাকবে তা উদাহরণস্বরূপ সীমাবদ্ধ নয়;

8:30-9:40
09:40-09 : 50
09 : 40-09 : 50
09:40 - 09 : 50
08:00to05:00
08 : 00to05 : 00
08:00 to 05:00
8am-09pm
08h00 till 17h00
8pm-5am
08h00,21h00
06pm untill 9am

যতক্ষণ সময়গুলি সংখ্যার অন্তর্ভুক্ত থাকে ততক্ষণ এটি আরও অনেকগুলি পিকআপ নেবে


1
RegExr requires a modern browser. Please update your browser to the latest version and try again.... আমি এটি দেখতেও পাই না ...: - /
মার্টিন টর্নয়েজ

-3

নিম্নলিখিত চেষ্টা করুন

^([0-2][0-3]:[0-5][0-9])|(0?[0-9]:[0-5][0-9])$

দ্রষ্টব্য: আমি জাভাস্ক্রিপ্ট রেজেক্স ইঞ্জিন ধরেছিলাম। যদি এটির থেকে আলাদা হয় তবে দয়া করে আমাকে জানান।


-3

আপনি নিম্নোক্ত রেজেক্স ব্যবহার করতে পারেন:

^[0-2]?[0-3]:[0-5][0-9]$

আমি যে পরিবর্তন করেছি তা কেবল বামতম সংখ্যাটি isচ্ছিক। রেগেক্সের বাকী অংশ একই রকম।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.