Repository: validatorjs/validator.js
Pull request #1695 (2021-07-10 18:37:36)

Add mobile number prefix 162 and 165 to zh-CN locale ismobilePhone #1655

Add isMobilePhone China prefix 162 and 165


As requested by #1655 and according https://en.wikipedia.org/wiki/Telephone_numbers_in_China, prefix 162 and 165 are valid for mobile numbers in China.

## Checklist

- [ x] PR contains only changes related; no stray files, etc.
- [ x] README updated (where applicable)
- [ x] Tests written (where applicable)



Patch:
diff --git a/src/index.js b/src/index.js
index 6759474..59b813c 100644
--- a/src/index.js
+++ b/src/index.js
@@ -48,7 +48,7 @@ import isHSL from './lib/isHSL';
 
 import isISRC from './lib/isISRC';
 
-import isIBAN from './lib/isIBAN';
+import isIBAN, { locales as ibanLocales } from './lib/isIBAN';
 import isBIC from './lib/isBIC';
 
 import isMD5 from './lib/isMD5';
@@ -222,6 +222,7 @@ const validator = {
   isDate,
   isLicensePlate,
   isVAT,
+  ibanLocales,
 };
 
 export default validator;
diff --git a/src/lib/isIBAN.js b/src/lib/isIBAN.js
index 19853aa..535a957 100644
--- a/src/lib/isIBAN.js
+++ b/src/lib/isIBAN.js
@@ -135,3 +135,5 @@ export default function isIBAN(str) {
 
   return hasValidIbanFormat(str) && hasValidIbanChecksum(str);
 }
+
+export const locales = Object.keys(ibanRegexThroughCountryCode);
diff --git a/src/lib/isMobilePhone.js b/src/lib/isMobilePhone.js
index 95b5685..6bf6d22 100644
--- a/src/lib/isMobilePhone.js
+++ b/src/lib/isMobilePhone.js
@@ -114,7 +114,7 @@ const phones = {
   'uk-UA': /^(\+?38|8)?0\d{9}$/,
   'uz-UZ': /^(\+?998)?(6[125-79]|7[1-69]|88|9\d)\d{7}$/,
   'vi-VN': /^(\+?84|0)((3([2-9]))|(5([2689]))|(7([0|6-9]))|(8([1-9]))|(9([0-9])))([0-9]{7})$/,
-  'zh-CN': /^((\+|00)86)?1([3456789][0-9]|4[579]|6[67]|7[01235678]|9[012356789])[0-9]{8}$/,
+  'zh-CN': /^((\+|00)86)?1([3456789][0-9]|4[579]|6[2567]|7[01235678]|9[012356789])[0-9]{8}$/,
   'zh-TW': /^(\+?886\-?|0)?9\d{8}$/,
 };
 /* eslint-enable max-len */


Test patch:
diff --git a/test/exports.js b/test/exports.js
index 32daa99..0bff532 100644
--- a/test/exports.js
+++ b/test/exports.js
@@ -5,6 +5,7 @@ import { locales as isAlphaLocales } from '../src/lib/isAlpha';
 import { locales as isAlphanumericLocales } from '../src/lib/isAlphanumeric';
 import { locales as isMobilePhoneLocales } from '../src/lib/isMobilePhone';
 import { locales as isFloatLocales } from '../src/lib/isFloat';
+import { locales as ibanCountryCodes } from '../src/lib/isIBAN';
 
 describe('Exports', () => {
   it('should export validators', () => {
@@ -50,4 +51,9 @@ describe('Exports', () => {
     assert.ok(isFloatLocales instanceof Array);
     assert.ok(validator.isFloatLocales instanceof Array);
   });
+
+  it('should export a list of country codes that implement IBAN', () => {
+    assert.ok(ibanCountryCodes instanceof Array);
+    assert.ok(validator.ibanLocales instanceof Array);
+  });
 });
diff --git a/test/validators.js b/test/validators.js
index c711948..57f2d2b 100644
--- a/test/validators.js
+++ b/test/validators.js
@@ -5987,6 +5987,9 @@ describe('Validators', () => {
           '16565600001',
           '+8617269427292',
           '008617269427292',
+          '16238234822',
+          '008616238234822',
+          '+8616238234822',
         ],
         invalid: [
           '12345',