Skip to content

Commit 14b0cd4

Browse files
Livin21tunnckoCore
authored andcommitted
feat: add support for indian phone numbers (#4)
* add add support for indian phone numbers (#4) * test indian not-exact condition * add tests * update readme
1 parent 7d5faf5 commit 14b0cd4

File tree

3 files changed

+49
-1
lines changed

3 files changed

+49
-1
lines changed

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ phone({ exact: true }).test('apple 1234567890') // => false
2323
phone().test('1234567890') // => true
2424
phone().test('apple 1234567890') // => true
2525
phone().test('apple') // => false
26+
27+
// Indian option
28+
phone({ indian: true }).test('mango 9744142626') // => true
29+
phone({ indian: true }).test('mango 1234567890') // => false
30+
phone({ indian: true, exact: true }).test('mango 9744142626') // => false
2631
```
2732

2833
## Acknowledgements
@@ -42,3 +47,4 @@ MIT
4247
5. Create new Pull Request
4348

4449
Crafted with <3 by [John Otander](http://johnotander.com).
50+
Support for Indian Numbers added by [Livin Mathew](https://github.com/Livin21).

index.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
module.exports = function(options) {
44
options = options || {};
55
var regexBase = '(?:\\+?(\\d{1,3}))?[-. (]*(\\d{3})[-. )]*(\\d{3})[-. ]*(\\d{4})(?: *x(\\d+))?';
6+
var indianRegexBase = '(?:(?:\\+|0{0,2})91(\\s*[\\ -]\\s*)?|[0]?)?[789]\\d{9}|(\\d[ -]?){10}\\d';
67

7-
return options.exact ? new RegExp('^' + regexBase + '$') :
8+
return options.indian ? options.exact ? new RegExp('^' + indianRegexBase + '$') :
9+
new RegExp('\\s*' + indianRegexBase + '\\s*', 'g') : options.exact ? new RegExp('^' + regexBase + '$') :
810
new RegExp('\\s*' + regexBase + '\\s*', 'g');
911
}

test/test.js

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ var phone = require('..');
33

44
describe('phone-regex', function() {
55

6+
// !indian exact
67
describe('exact: true', function() {
78

89
it('should find a (XXX) XXX-XXXX phone number when it exists', function() {
@@ -42,6 +43,45 @@ describe('phone-regex', function() {
4243
});
4344
});
4445

46+
// indian !exact
47+
describe('indian: true', function() {
48+
49+
it('should find an Indian phone number when it exists', function() {
50+
assert.equal(phone({indian: true}).test('mangoes +91 9744142626'), true);
51+
});
52+
53+
it('should find all Indian phone numbers in a string', function() {
54+
assert.equal('+91 9744142626 orange 04842 274162'.match(phone({indian: true})).length, 2);
55+
});
56+
57+
it('should not find phone numbers when they do not exist', function() {
58+
assert.equal('pineapples'.match(phone({indian: true})), null);
59+
});
60+
61+
});
62+
63+
// indian exact
64+
describe('indian: true, exact: true', function() {
65+
66+
it('should find a (+91 XXXXXXXXXX) phone number when it exists', function() {
67+
assert.equal(phone({indian: true, exact: true}).test('+91 9744142626'), true);
68+
});
69+
70+
it('should find a (XXXXX XXXXXX) phone number when it exists', function() {
71+
assert.equal(phone({indian: true, exact: true}).test('04842 274162'), true);
72+
});
73+
74+
it('should find a (XXXXXXXXXX) phone number when it exists', function() {
75+
assert.equal(phone({indian: true, exact: true}).test('9744142626'), true);
76+
});
77+
78+
it('should find a (XXXX - XXXXXXXXXX) phone number when it exists', function() {
79+
assert.equal(phone({indian: true, exact: true}).test('0091 - 9744142626'), true);
80+
});
81+
82+
});
83+
84+
// !indian !exact
4585
describe('g', function() {
4686

4787
it('should find a phone number when it exists', function() {

0 commit comments

Comments
 (0)