ফোন নম্বরটি ডায়াল করার চেষ্টা করার আগে আমাকে ফোন নম্বরটি বৈধ কিনা তা নির্ধারণ করতে হবে। ফোন কল বিশ্বের যে কোনও জায়গায় যেতে পারে।
কোন নিয়মিত প্রকাশটি বৈধ আন্তর্জাতিক ফোন নম্বরগুলির সাথে মিলবে?
ফোন নম্বরটি ডায়াল করার চেষ্টা করার আগে আমাকে ফোন নম্বরটি বৈধ কিনা তা নির্ধারণ করতে হবে। ফোন কল বিশ্বের যে কোনও জায়গায় যেতে পারে।
কোন নিয়মিত প্রকাশটি বৈধ আন্তর্জাতিক ফোন নম্বরগুলির সাথে মিলবে?
উত্তর:
\+(9[976]\d|8[987530]\d|6[987]\d|5[90]\d|42\d|3[875]\d|
2[98654321]\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|
4[987654310]|3[9643210]|2[70]|7|1)\d{1,14}$
একটি জেনেরিক আন্তর্জাতিক ফোন নম্বর মিলানোর জন্য সঠিক ফর্ম্যাট। আমি মার্কিন স্থল লাইন কেন্দ্রিক আন্তর্জাতিক অ্যাক্সেস কোড 011 এর পরিবর্তে '+' এর মানক আন্তর্জাতিক অ্যাক্সেস কোড সনাক্তকারী দিয়ে এটিকে বাধ্যতামূলক করে তুলেছি। আমি জাতীয় সংখ্যার জন্য সর্বনিম্ন পরিবর্তন করে কমপক্ষে একটি ডিজিটও করেছি।
মনে রাখবেন যে আপনি যদি এই মোবাইল ফোনের ঠিকানা বইতে এই ফর্ম্যাটে নম্বরগুলি প্রবেশ করেন তবে আপনি যেখানেই ভ্রমণ করবেন না কেন আপনি আপনার ঠিকানা বইতে কোনও নম্বরই সাফল্যের সাথে কল করতে পারেন। স্থলরেখার জন্য, আপনি যে দেশের ডায়াল করছেন সেটির জন্য আন্তর্জাতিক অ্যাক্সেস কোডের সাথে প্লাসটি প্রতিস্থাপন করুন।
নোট করুন যে এটি জাতীয় নম্বর পরিকল্পনার নিয়মগুলিকে বিবেচনায় রাখে না - বিশেষত, এটি এমন জাতীয় শূন্যস্থানগুলি এমন জায়গাগুলিতে শূন্য এবং তাদেরকে অনুমতি দেয় এবং কিছু দেশের জাতীয় সংখ্যা পরিকল্পনার চেয়ে বড় দৈর্ঘ্যকেও মঞ্জুরি দেয় (যেমন, মার্কিন)।
^\+((?:9[679]|8[035789]|6[789]|5[90]|42|3[578]|2[1-689])|9[0-58]|8[1246]|6[0-6]|5[1-8]|4[013-9]|3[0-469]|2[70]|7|1)(?:\W*\d){0,13}\d$
00
সামনে অনুমতি দেওয়া বোধগম্য হতে পারে । দৃশ্য উন্নয়ন এবং রক্ষণাবেক্ষণ বিন্দু থেকে, আমি এটা পুরোপুরি জরিমানা সমস্ত নম্বর জোরদার করা হচ্ছে দিয়ে শুরু করতে বলতে চাই +
বা এমনকি প্রতিস্থাপন 00
একটি সঙ্গে +
প্রতিটি সময় আপনি এটি পেতে - বিশেষ করে দেওয়া যে অধিকাংশ লোক সচেতন +
ফরম্যাট (যা সর্বাধিক আন্তর্জাতিক ফোন ইনপুট ক্ষেত্রে যাইহোক প্রয়োজন)। প্লাস এটি একটি ওয়ান-লাইন ফিক্স এবং আরও পাঠযোগ্য way এই পদ্ধতির সাথে এটিও নিশ্চিত হবে যে সমস্ত ফোন নম্বর একই ফর্ম্যাটে রয়েছে এবং আপনার বৈধতাটিকে অনেক কম ত্রুটি-প্রবণ করে তোলে, ফলে পুরো জিনিসটি আরও রক্ষণাবেক্ষণযোগ্য করে তোলে।
00
বার্তাটি সঠিকভাবে প্রেরণ করে না, যেখানে শুরু করে +
সর্বদা আন্তর্জাতিকভাবে কাজ করে। আমরা পাগল হয়ে যেতে পারি এবং এটি আরও জটিল করে তুলতে পারি, তবে কখনও কখনও আমাদের জীবন সহজ করার জন্য কয়েকটি বাধা ফেলে দেওয়া সম্ভব / মূল্যবান :)
সমস্ত দেশের কোডগুলি ITU দ্বারা সংজ্ঞায়িত করা হয়। নিম্নলিখিত রেজেক্সটি ITU-T E.164 এবং আনেক্স থেকে ITU অপারেশনাল বুলেটিন নং 930 - 15.IV.2009 উপর ভিত্তি করে । এতে ভবিষ্যতের ব্যবহারের জন্য সংরক্ষিত সমস্ত বর্তমান দেশের কোড এবং কোড রয়েছে। যদিও এটি কিছুটা ছোট করা যেতে পারে, আমি প্রতিটি কোডকে স্বতন্ত্রভাবে অন্তর্ভুক্ত করার সিদ্ধান্ত নিয়েছি।
এটি মার্কিন যুক্তরাষ্ট্র থেকে আগত কলগুলির জন্য। অন্যান্য দেশগুলির জন্য, আন্তর্জাতিক অ্যাক্সেস কোড (রেজেক্সের শুরুতে 011) এর পরিবর্তে সেই দেশের ডায়ালিং পরিকল্পনার জন্য যা উপযুক্ত তা প্রতিস্থাপন করুন ।
এছাড়াও, নোট করুন আইটিইউ E.164 সম্পূর্ণ আন্তর্জাতিক টেলিফোন নম্বরটির সর্বাধিক দৈর্ঘ্য 15 ডিজিটে সংজ্ঞায়িত করে। এর অর্থ তিনটি দেশীয় কোডের ফলাফল পর্যন্ত 12 টি অতিরিক্ত সংখ্যার ফলাফল এবং 1 সংখ্যার দেশ কোডে 14 টি অতিরিক্ত সংখ্যা থাকতে পারে digit অত: পর
[0-9]{0,14}$
রেজেক্সের শেষ।
সর্বাধিক গুরুত্বপূর্ণ, এই রেজেক্সের অর্থ সংখ্যাটি বৈধ নয় - প্রতিটি দেশ নিজস্ব অভ্যন্তরীণ নম্বর পরিকল্পনাটি সংজ্ঞায়িত করে। এটি কেবলমাত্র দেশের কোডটি বৈধ কিনা তা নিশ্চিত করে।
283 | 282 | 281 | 280 | 269 | 268 | 267 | 266 | 265 | 264 | 263 | 262 | 261 | 260 | 259 | 258 | 257 | 256 | 255 | 254 | 253 | 252 | 251 | 250 | 249 | 248 | 247 | 246 | 245 | 244 | 243 | 242 | 241 | 240 | 239 | 238 | 237 | 236 | 235 | 234 | 233 | 232 | 231 | 230 | 229 | 228 | 227 | 226 | 225 | 224 | 223 | 222 | 221 | 220 | 219 | 218 | 217 | 216 | 215 | 214 | 213 | 212 | 211 | 210 | 98 | 95 | 94 | 93 | 92 | 91 | 90 | 86 | 84 | 82 | 81 | 66 | 65 | 64 | 63 | 62 | 61 | 60 | 58 | 57 | 56 | 55 | 54 | 53 | 52 | 51 | 49 | 48 | 47 | 46 | 45 | 44 | 43 | 41 | 40 | 39 | 36 | 34 | 33 | 32 | 31 | 30 | 27 | 20 | 7 | 1) [0-9] {0, 14}
এটি আরও একটি অপ্টিমাইজেশন।
\+(9[976]\d|8[987530]\d|6[987]\d|5[90]\d|42\d|3[875]\d|
2[98654321]\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|
4[987654310]|3[9643210]|2[70]|7|1)
\W*\d\W*\d\W*\d\W*\d\W*\d\W*\d\W*\d\W*\d\W*(\d{1,2})$
(i) বৈধ আন্তর্জাতিক উপসর্গের জন্য অনুমতি দেয়
(ii) 9 বা 10 অঙ্কের পরে, কোনও ধরণের বা ডিলিমিটার স্থাপন (শেষ দুটি অঙ্কের ব্যতীত)
এটি মিলবে:
+ 1-234-567-8901
+ 61-234-567-89-01
+ 46-234 5678901
+1 (234) 56 89 901
+1 (234)
56-89 901 +46.234.567.8901
+1 / 234/567/8901
আপনি গুগল থেকে লাইব্রেরি লাইফফোনেম্বার ব্যবহার করতে পারেন ।
PhoneNumberUtil phoneNumberUtil = PhoneNumberUtil.getInstance();
String decodedNumber = null;
PhoneNumber number;
try {
number = phoneNumberUtil.parse(encodedHeader, null);
decodedNumber = phoneNumberUtil.format(number, PhoneNumberFormat.E164);
} catch (NumberParseException e) {
e.printStackTrace();
}
আমি এটি ব্যবহার করি:
/([0-9\s\-]{7,})(?:\s*(?:#|x\.?|ext\.?|extension)\s*(\d+))?$/
সুবিধাগুলি: + বা 011 সূচনাগুলি স্বীকৃতি দেয়, এটি প্রয়োজন হিসাবে দীর্ঘতর হতে দেয় এবং অনেকগুলি এক্সটেনশন কনভেনশন পরিচালনা করে। (# X, EXT, এক্সটেনশন)
আপনার রেইগেক্সের একটি "অনুকূলিত" সংস্করণ এখানে রয়েছে:
^011(9[976]\d|8[987530]\d|6[987]\d|5[90]\d|42\d|3[875]\d|
2[98654321]\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|
4[987654310]|3[9643210]|2[70]|7|1)\d{0,14}$
আপনি প্রতিস্থাপন করতে পারেন \d
সঙ্গে গুলি [0-9]
যদি আপনার Regex সিনট্যাক্স সমর্থন করে না \d
।
জন্য আইওএস স্যুইফ্ট আমি এই সহায়ক বলে চিহ্নিত করেছেন,
let phoneRegEx = "^((\\+)|(00)|(\\*)|())[0-9]{3,14}((\\#)|())$"
@ এরিকের নিয়মিত অভিব্যক্তি পরিবর্তিত - সমস্ত দেশের কোডের একটি তালিকা যুক্ত করেছে (এগুলি xxxdepy @ Github থেকে পেয়েছে I আমি আশা করি আপনি এটি সহায়ক পাবেন:
/(\+|00)(297|93|244|1264|358|355|376|971|54|374|1684|1268|61|43|994|257|32|229|226|880|359|973|1242|387|590|375|501|1441|591|55|1246|673|975|267|236|1|61|41|56|86|225|237|243|242|682|57|269|238|506|53|5999|61|1345|357|420|49|253|1767|45|1809|1829|1849|213|593|20|291|212|34|372|251|358|679|500|33|298|691|241|44|995|44|233|350|224|590|220|245|240|30|1473|299|502|594|1671|592|852|504|385|509|36|62|44|91|246|353|98|964|354|972|39|1876|44|962|81|76|77|254|996|855|686|1869|82|383|965|856|961|231|218|1758|423|94|266|370|352|371|853|590|212|377|373|261|960|52|692|389|223|356|95|382|976|1670|258|222|1664|596|230|265|60|262|264|687|227|672|234|505|683|31|47|977|674|64|968|92|507|64|51|63|680|675|48|1787|1939|850|351|595|970|689|974|262|40|7|250|966|249|221|65|500|4779|677|232|503|378|252|508|381|211|239|597|421|386|46|268|1721|248|963|1649|235|228|66|992|690|993|670|676|1868|216|90|688|886|255|256|380|598|1|998|3906698|379|1784|58|1284|1340|84|678|681|685|967|27|260|263)(9[976]\d|8[987530]\d|6[987]\d|5[90]\d|42\d|3[875]\d|2[98654321]\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)\d{4,20}$/
এটি করার বিভিন্ন উপায়ের স্পষ্টরূপে অনেকগুলি উপায় রয়েছে, যতক্ষণ না এ পর্যন্ত দেওয়া বিভিন্ন উত্তর দ্বারা প্রমাণিত হয়েছে তবে আমি এখানে আমার 0.02 ডলার মূল্যের নিক্ষেপ করব এবং নীচের রেজেক্সটি সরবরাহ করব যা উপরের প্রায় সমস্তটির চেয়ে কিছুটা নিবিড় is , তবে বেশিরভাগের চেয়ে আরও সম্পূর্ণ। এটিতে দেশের কোডটি $ 1 এবং স্থানীয় নম্বরটি 2 ডলারে রেখে দেওয়ার চমৎকার পার্শ্ব-প্রতিক্রিয়া রয়েছে।
^ \ + + (? = \ ঘ {5,15} $) (1 | 2 [078] | 3 [0-469] | 4 [013-9] | 5 [1-8] | 6 [0-6] | 7 | 8 [1-469] | 9 [0-58] | [2-9] ..) (\ D +) $
এই দুর্দান্ত উত্তরের বিষয়ে কোনও সমালোচনা নেই আমি কেবল আমাদের প্রশাসক সামগ্রী সামগ্রী নির্মাতাদের জন্য আমি যে সহজ সমাধানটি ব্যবহার করি তা উপস্থাপন করতে চাই:
^(\+|00)[1-9][0-9 \-\(\)\.]{7,}$
একটি প্লাস বা দুটি শূন্য দিয়ে জোর করে শুরু করুন এবং কমপক্ষে কয়েকটি নম্বর, সাদা স্থান, ধনুর্বন্ধনী, বিয়োগ এবং বিন্দুটি alচ্ছিক এবং অন্য কোনও অক্ষর ব্যবহার করুন। আপনি নিরাপদে সমস্ত অ-সংখ্যা মুছে ফেলতে পারেন এবং এটি একটি টেল: ইনপুটটিতে ব্যবহার করতে পারেন। সংখ্যাগুলিতে প্রতিনিধিত্বের একটি সাধারণ রূপ থাকবে এবং আমাকে সীমাবদ্ধ হওয়ার বিষয়ে চিন্তা করতে হবে না।
public static boolean validateInternationalPhoneNumberFormat(String phone) {
StringBuilder sb = new StringBuilder(200);
// Country code
sb.append("^(\\+{1}[\\d]{1,3})?");
// Area code, with or without parentheses
sb.append("([\\s])?(([\\(]{1}[\\d]{2,3}[\\)]{1}[\\s]?)|([\\d]{2,3}[\\s]?))?");
// Phone number separator can be "-", "." or " "
// Minimum of 5 digits (for fixed line phones in Solomon Islands)
sb.append("\\d[\\-\\.\\s]?\\d[\\-\\.\\s]?\\d[\\-\\.\\s]?\\d[\\-\\.\\s]?\\d[\\-\\.\\s]?");
// 4 more optional digits
sb.append("\\d?[\\-\\.\\s]?\\d?[\\-\\.\\s]?\\d?[\\-\\.\\s]?\\d?$");
return Pattern.compile(sb.toString()).matcher(phone).find();
}
নিম্নলিখিত সর্বাধিক প্রচলিত ফোন নম্বর দৃশ্যের জন্য একটি রেজেক্স রয়েছে। যদিও এটি অঞ্চলীয় কোডগুলির জন্য একটি মার্কিন দৃষ্টিকোণ থেকে তৈরি করা হয়েছে এটি আন্তর্জাতিক পরিস্থিতির জন্য কাজ করে।
একটি বৈধ ফোন নম্বর সমস্ত শূন্য হতে পারে না।
^(?!\b(0)\1+\b)(\+?\d{1,3}[. -]?)?\(?\d{3}\)?([. -]?)\d{3}\3\d{4}$
ব্যাখ্যা:
^ - start of expression
(?!\b(0)\1+\b) - (?!)Negative Look ahead. \b - word boundary around a '0' character. \1 backtrack to previous capturing group (zero). Basically don't match all zeros.
(\+?\d{1,3}[. -]?)? - '\+?' plus sign before country code is optional.\d{1,3} - country code can be 1 to 3 digits long. '[. -]?' - spaces,dots and dashes are optional. The last question mark is to make country code optional.
\(?\d{3}\)? - '\)?' is to make parentheses optional. \d{3} - match 3 digit area code.
([. -]?) - optional space, dash or dot
$ - end of expression
আরও উদাহরণ এবং ব্যাখ্যা - https://regex101.com/r/hTH8Ct/2/
আমি এটি নীচে ব্যবহার করেছি:
^(\+|00)[0-9]{1,3}[0-9]{4,14}(?:x.+)?$
+ CCC.NNNNNNNNNNxEEEE বা 00CCC.NNNNNNNNNNNEEEE ফর্ম্যাট
আন্তর্জাতিক কল করার জন্য ফোন নম্বর অবশ্যই '+' বা '00' দিয়ে শুরু করা উচিত। যেখানে সি হল ১-৩ ডিজিটের দেশ কোড,
এন 14 টি সংখ্যা পর্যন্ত
এবং E হ'ল (alচ্ছিক) এক্সটেনশন।
দেশের কোড অনুসরণ করে শীর্ষস্থানীয় প্লাস চিহ্ন এবং ডট প্রয়োজন। আক্ষরিক "x" অক্ষরটি কেবল তখনই প্রয়োজন যখন কোনও এক্সটেনশন সরবরাহ করা হয়।
ফোন নম্বর বৈধতার জন্য নিম্নলিখিত এপিআই চেষ্টা করুন। এছাড়াও এটি দেশ, অঞ্চল এবং সরবরাহকারীকে ফিরিয়ে দেবে
ডেমো https://libphonenumber.appspot.com/
গিট https://github.com/googlei18n/libphonenumber/releases/tag/v8.9.0
আন্তর্জাতিক নম্বর দেওয়ার পরিকল্পনাটি আইটিইউয়ের উপর ভিত্তি করে E.164 এর সংখ্যায়ন পরিকল্পনার । আমার ধারণা এটি আপনার নিয়মিত অভিব্যক্তির সূচনালগ্ন।
আমি ITU E.164 সংখ্যার উপর ভিত্তি করে নিয়মিত এক্সপ্রেশন তৈরি করতে কাছাকাছি পেলে আমি এটি আপডেট করব।
এই রেজেক্স এক্সপ্রেশনটি তাদের দেশের কোডগুলি সহ ভারত, কানাডা, ইউরোপ, নিউজিল্যান্ড, অস্ট্রেলিয়া, মার্কিন যুক্তরাষ্ট্রের ফোন নম্বরগুলির জন্য কাজ করে:
"^(\+(([0-9]){1,2})[-.])?((((([0-9]){2,3})[-.]){1,2}([0-9]{4,10}))|([0-9]{10}))$"
যদিও এটি কাজটি করতে সত্যই RegExp ব্যবহার করছে না - বা এর কারণ হতে পারে - এটি আমার কাছে একটি দুর্দান্ত সমাধান বলে মনে হচ্ছে: https://intl-tel-input.com/node_modules/intl-tel-input/example /gen/is-valid-number.html
এটি চেষ্টা করুন, এটি আমার পক্ষে কাজ করে।
^(00|\+)[1-9]{1}([0-9][\s]*){9,16}$
আমি ইওরোপীয় ফোন নম্বরগুলির জন্য রেজিএক্সপ্যাক তৈরি করেছি এবং এটি ডায়াল প্রিফিক্স বনাম সংখ্যার দৈর্ঘ্যের তুলনায় নির্দিষ্ট।
const PhoneEuropeRegExp = () => {
// eu phones map https://en.wikipedia.org/wiki/Telephone_numbers_in_Europe
const phonesMap = {
"43": [4, 13],
"32": [8, 10],
"359": [7, 9],
"385": [8, 9],
"357": 8,
"420": 9,
"45": 8,
"372": 7,
"358": [5, 12],
"33": 9,
"350": 8,
"49": [3, 12],
"30": 10,
"36": [8, 9],
"354": [7, 9],
"353": [7, 9],
"39": [6, 12],
"371": 8,
"423": [7, 12],
"370": 8,
"352": 8,
"356": 8,
"31": 9,
"47": [4, 12],
"48": 9,
"351": 9,
"40": 9,
"421": 9,
"386": 8,
"34": 9,
"46": [6, 9],
};
const regExpBuilt = Object.keys(phonesMap)
.reduce(function(prev, key) {
const val = phonesMap[key];
if (Array.isArray(val)) {
prev.push("(\\+" + key + `[0-9]\{${val[0]},${val[1]}\})`);
} else {
prev.push("(\\+" + key + `[0-9]\{${val}\})`);
}
return prev;
}, [])
.join("|");
return new RegExp(`^(${regExpBuilt})$`);
};
alert(PhoneEuropeRegExp().test("+420123456789"))
এটি চেষ্টা করে দেখুন, 12 এর চেয়ে বেশি কোনও ফোন নম্বর আছে কিনা তা আমি জানি না:
^(00|\+){1}\d{12}$
^(00|\+){1}\d{12,15}$
তাহলে কেমন হয় ?