fix(isMobilePhone): Fix wrong dv-MV mobile phone matching (issue #2101) - #2109

Merged
profnandaa merged 2 commits into
validatorjs:masterfrom
pano9000:hotfix-isMobilePhone-#2101
Jan 29, 2023
Merged

fix(isMobilePhone): Fix wrong dv-MV mobile phone matching (issue #2101)#2109
profnandaa merged 2 commits into
validatorjs:masterfrom
pano9000:hotfix-isMobilePhone-#2101

Conversation

@pano9000

Copy link
Copy Markdown
Contributor

Hello,

As reported in #2101, isMobilePhone's dv-MV locale is not matching actually correct mobile phone numbers currently.

See my comments there, which show that that the original RegExp was wrong since it was originally committed, last October:
#2101 (comment)

The new RegExp is now based on the official "numbering plan" document from the Maldives Gov
(I've used the archived wayback machine's link, just in case the "live" document above changes in the future, as they seem to be updating that document regularly. Live version can be found here, dated June 2022, as of today).

In there they describe the following ranges as valid mobile phone ranges:
72X XXXX to 79X XXXX
91X XXXX to 99X XXXX

Further examples can also be found in the comment above.

This PR fixes#2101
I also updated the tests accordingly, as the previous tests of course are not valid either anymore.

Potential room for improvement here (but I feel like that maybe should be a separate PR as it is more a feature maybe?):
Also account for "local formatting" of the number - i.e. it appears to be common to use a space or hyphen, separating the (non international) digits into two blocks, e.g.

  • 722 1234
  • 723-4567

I'll create a separate PR for this, after this fix has been pulled in

Thank you

Checklist

  • PR contains only changes related; no stray files, etc.
  • README updated (where applicable)
  • Tests written (where applicable)

@codecov

codecovBot commented Dec 2, 2022

Copy link
Copy Markdown

Codecov Report

Base: 100.00% // Head: 100.00% // No change to project coverage 👍

Coverage data is based on head (fba5b32) compared to base (f97e8d4).
Patch has no changes to coverable lines.

Additional details and impacted files
@@ Coverage Diff @@## master #2109 +/- ##
=========================================
Coverage 100.00% 100.00% =========================================
Files 105 105 Lines 2335 2335 Branches 586 586 =========================================
Hits 2335 2335 
Impacted FilesCoverage Δ
src/lib/isMobilePhone.js100.00% <ø> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

☔ View full report at Codecov.
📢 Do you have feedback about the report comment? Let us know in this issue.

Comment threadtest/validators.js
Comment on lines +9531 to +9534
'9609112345',
'9609958973',
'9607212963',
'9607986963',

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are these really valid? It seems strange to have a country code there without any indicator that it is a country code (+ or 00, for example). I couldn't find any examples of numbers like this from your links.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for your comment, as you make a valid point.

Strictly speaking:
no, these are not valid phone numbers, if there is no + or 00 in front of the country code.

However, I just tried to stick to the same RegExp style like (most if not almost all) the other phone numbers, which are making the + optional, when you don't set the strictMode option to true.
And I just included these technically invalid phone numbers in the tests as well, to test that this "optional" matching works as well :-)

E.g. random examples from isMobilePhone.js:

  • nn-NO currently uses /^(\+?47)?[49]\d{7}$/
  • el-GR currently used /^(\+?30|0)?(69\d{8})$/

both of these will match phone numbers without 00 or + as valid.

a big side note on this topic

Generally speaking the isMobilePhone RegExp do not seem to be very constistent altogether in the way the RegExp are matching the phone numbers:

  • some are checking for the + as mandatory (regardless of strictMode)
  • some are checking for the + as optional
  • many do not check for the 00 prefix, which actually should be valid as well
  • etc.

There's a whole range of different formats in the isMobilePhone, which IMHO should be made a bit more consistent, across all of the different countries (or locales in this case).

However fixing that would be a whole new thingon its own, which I could try to tackle soon as well - the only problem I see is that there are a lot of unmerged PRs in regards to the isMobilePhone, so I am not sure if I should already try to add my changes or wait until these are added?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That is certainly interesting. I don't use phone validation from this library, so I haven't looked much into that side of things. This should definitely be fixed somehow. Could you post this as a new issue?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, I'll write something up later today and post as a separate issue, so that we can track this better

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, let's track this as a separate issue, did you post it? Will definitely be a breaking change but a necessary one.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@profnandaa yeah, had posted it as #2124

WikiRik
WikiRik previously approved these changes Dec 13, 2022
rubiin
rubiin previously approved these changes Jan 21, 2023
@rubiinrubiin added ready-to-land For PRs that are reviewed and ready to be landed ✅ LGTM labels Jan 21, 2023
profnandaa
profnandaa previously approved these changes Jan 22, 2023

@profnandaaprofnandaa left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@profnandaaprofnandaa added mc-to-land Just merge-conflict standing between the PR and landing. and removed ready-to-land For PRs that are reviewed and ready to be landed labels Jan 22, 2023
Panagiotis Papadopoulos added 2 commits January 29, 2023 00:29
The RegExp and corresponding tests were testing a wrong format.
Correct format can be found in the numbering plan:
https://web.archive.org/web/20220614004138/https://cam.gov.mv/docs/Numbering_plan.pdf
fixes issue validatorjs#2101
@pano9000
pano9000 dismissed stale reviews from profnandaa, rubiin, and WikiRik via fba5b32January 28, 2023 23:31
@pano9000
pano9000force-pushed the hotfix-isMobilePhone-#2101 branch from c97c42c to fba5b32CompareJanuary 28, 2023 23:31
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✅ LGTMmc-to-landJust merge-conflict standing between the PR and landing.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Incorrect validation for Maldives phone numbers

5 participants

@pano9000@profnandaa@braaar@rubiin@WikiRik
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

fix(isMobilePhone): Fix wrong dv-MV mobile phone matching (issue #2101) - #2109

Merged
profnandaa merged 2 commits into
validatorjs:masterfrom
pano9000:hotfix-isMobilePhone-#2101
Jan 29, 2023
Merged

fix(isMobilePhone): Fix wrong dv-MV mobile phone matching (issue #2101)#2109
profnandaa merged 2 commits into
validatorjs:masterfrom
pano9000:hotfix-isMobilePhone-#2101

Conversation

@pano9000

Copy link
Copy Markdown
Contributor

Hello,

As reported in #2101, isMobilePhone's dv-MV locale is not matching actually correct mobile phone numbers currently.

See my comments there, which show that that the original RegExp was wrong since it was originally committed, last October:
#2101 (comment)

The new RegExp is now based on the official "numbering plan" document from the Maldives Gov
(I've used the archived wayback machine's link, just in case the "live" document above changes in the future, as they seem to be updating that document regularly. Live version can be found here, dated June 2022, as of today).

In there they describe the following ranges as valid mobile phone ranges:
72X XXXX to 79X XXXX
91X XXXX to 99X XXXX

Further examples can also be found in the comment above.

This PR fixes#2101
I also updated the tests accordingly, as the previous tests of course are not valid either anymore.

Potential room for improvement here (but I feel like that maybe should be a separate PR as it is more a feature maybe?):
Also account for "local formatting" of the number - i.e. it appears to be common to use a space or hyphen, separating the (non international) digits into two blocks, e.g.

  • 722 1234
  • 723-4567

I'll create a separate PR for this, after this fix has been pulled in

Thank you

Checklist

  • PR contains only changes related; no stray files, etc.
  • README updated (where applicable)
  • Tests written (where applicable)

@codecov

codecovBot commented Dec 2, 2022

Copy link
Copy Markdown

Codecov Report

Base: 100.00% // Head: 100.00% // No change to project coverage 👍

Coverage data is based on head (fba5b32) compared to base (f97e8d4).
Patch has no changes to coverable lines.

Additional details and impacted files
@@ Coverage Diff @@## master #2109 +/- ##
=========================================
Coverage 100.00% 100.00% =========================================
Files 105 105 Lines 2335 2335 Branches 586 586 =========================================
Hits 2335 2335 
Impacted FilesCoverage Δ
src/lib/isMobilePhone.js100.00% <ø> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

☔ View full report at Codecov.
📢 Do you have feedback about the report comment? Let us know in this issue.

Comment threadtest/validators.js
Comment on lines +9531 to +9534
'9609112345',
'9609958973',
'9607212963',
'9607986963',

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are these really valid? It seems strange to have a country code there without any indicator that it is a country code (+ or 00, for example). I couldn't find any examples of numbers like this from your links.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for your comment, as you make a valid point.

Strictly speaking:
no, these are not valid phone numbers, if there is no + or 00 in front of the country code.

However, I just tried to stick to the same RegExp style like (most if not almost all) the other phone numbers, which are making the + optional, when you don't set the strictMode option to true.
And I just included these technically invalid phone numbers in the tests as well, to test that this "optional" matching works as well :-)

E.g. random examples from isMobilePhone.js:

  • nn-NO currently uses /^(\+?47)?[49]\d{7}$/
  • el-GR currently used /^(\+?30|0)?(69\d{8})$/

both of these will match phone numbers without 00 or + as valid.

a big side note on this topic

Generally speaking the isMobilePhone RegExp do not seem to be very constistent altogether in the way the RegExp are matching the phone numbers:

  • some are checking for the + as mandatory (regardless of strictMode)
  • some are checking for the + as optional
  • many do not check for the 00 prefix, which actually should be valid as well
  • etc.

There's a whole range of different formats in the isMobilePhone, which IMHO should be made a bit more consistent, across all of the different countries (or locales in this case).

However fixing that would be a whole new thingon its own, which I could try to tackle soon as well - the only problem I see is that there are a lot of unmerged PRs in regards to the isMobilePhone, so I am not sure if I should already try to add my changes or wait until these are added?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That is certainly interesting. I don't use phone validation from this library, so I haven't looked much into that side of things. This should definitely be fixed somehow. Could you post this as a new issue?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, I'll write something up later today and post as a separate issue, so that we can track this better

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, let's track this as a separate issue, did you post it? Will definitely be a breaking change but a necessary one.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@profnandaa yeah, had posted it as #2124

WikiRik
WikiRik previously approved these changes Dec 13, 2022
rubiin
rubiin previously approved these changes Jan 21, 2023
@rubiinrubiin added ready-to-land For PRs that are reviewed and ready to be landed ✅ LGTM labels Jan 21, 2023
profnandaa
profnandaa previously approved these changes Jan 22, 2023

@profnandaaprofnandaa left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@profnandaaprofnandaa added mc-to-land Just merge-conflict standing between the PR and landing. and removed ready-to-land For PRs that are reviewed and ready to be landed labels Jan 22, 2023
Panagiotis Papadopoulos added 2 commits January 29, 2023 00:29
The RegExp and corresponding tests were testing a wrong format.
Correct format can be found in the numbering plan:
https://web.archive.org/web/20220614004138/https://cam.gov.mv/docs/Numbering_plan.pdf
fixes issue validatorjs#2101
@pano9000
pano9000 dismissed stale reviews from profnandaa, rubiin, and WikiRik via fba5b32January 28, 2023 23:31
@pano9000
pano9000force-pushed the hotfix-isMobilePhone-#2101 branch from c97c42c to fba5b32CompareJanuary 28, 2023 23:31
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✅ LGTMmc-to-landJust merge-conflict standing between the PR and landing.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Incorrect validation for Maldives phone numbers

5 participants

@pano9000@profnandaa@braaar@rubiin@WikiRik
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(isMobilePhone): Fix wrong dv-MV mobile phone matching (issue #2101) - #2109

Merged
profnandaa merged 2 commits into
validatorjs:masterfrom
pano9000:hotfix-isMobilePhone-#2101
Jan 29, 2023
Merged

fix(isMobilePhone): Fix wrong dv-MV mobile phone matching (issue #2101)#2109
profnandaa merged 2 commits into
validatorjs:masterfrom
pano9000:hotfix-isMobilePhone-#2101

Conversation

@pano9000

Copy link
Copy Markdown
Contributor

Hello,

As reported in #2101, isMobilePhone's dv-MV locale is not matching actually correct mobile phone numbers currently.

See my comments there, which show that that the original RegExp was wrong since it was originally committed, last October:
#2101 (comment)

The new RegExp is now based on the official "numbering plan" document from the Maldives Gov
(I've used the archived wayback machine's link, just in case the "live" document above changes in the future, as they seem to be updating that document regularly. Live version can be found here, dated June 2022, as of today).

In there they describe the following ranges as valid mobile phone ranges:
72X XXXX to 79X XXXX
91X XXXX to 99X XXXX

Further examples can also be found in the comment above.

This PR fixes#2101
I also updated the tests accordingly, as the previous tests of course are not valid either anymore.

Potential room for improvement here (but I feel like that maybe should be a separate PR as it is more a feature maybe?):
Also account for "local formatting" of the number - i.e. it appears to be common to use a space or hyphen, separating the (non international) digits into two blocks, e.g.

  • 722 1234
  • 723-4567

I'll create a separate PR for this, after this fix has been pulled in

Thank you

Checklist

  • PR contains only changes related; no stray files, etc.
  • README updated (where applicable)
  • Tests written (where applicable)

@codecov

codecovBot commented Dec 2, 2022

Copy link
Copy Markdown

Codecov Report

Base: 100.00% // Head: 100.00% // No change to project coverage 👍

Coverage data is based on head (fba5b32) compared to base (f97e8d4).
Patch has no changes to coverable lines.

Additional details and impacted files
@@ Coverage Diff @@## master #2109 +/- ##
=========================================
Coverage 100.00% 100.00% =========================================
Files 105 105 Lines 2335 2335 Branches 586 586 =========================================
Hits 2335 2335 
Impacted FilesCoverage Δ
src/lib/isMobilePhone.js100.00% <ø> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

☔ View full report at Codecov.
📢 Do you have feedback about the report comment? Let us know in this issue.

Comment threadtest/validators.js
Comment on lines +9531 to +9534
'9609112345',
'9609958973',
'9607212963',
'9607986963',

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are these really valid? It seems strange to have a country code there without any indicator that it is a country code (+ or 00, for example). I couldn't find any examples of numbers like this from your links.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for your comment, as you make a valid point.

Strictly speaking:
no, these are not valid phone numbers, if there is no + or 00 in front of the country code.

However, I just tried to stick to the same RegExp style like (most if not almost all) the other phone numbers, which are making the + optional, when you don't set the strictMode option to true.
And I just included these technically invalid phone numbers in the tests as well, to test that this "optional" matching works as well :-)

E.g. random examples from isMobilePhone.js:

  • nn-NO currently uses /^(\+?47)?[49]\d{7}$/
  • el-GR currently used /^(\+?30|0)?(69\d{8})$/

both of these will match phone numbers without 00 or + as valid.

a big side note on this topic

Generally speaking the isMobilePhone RegExp do not seem to be very constistent altogether in the way the RegExp are matching the phone numbers:

  • some are checking for the + as mandatory (regardless of strictMode)
  • some are checking for the + as optional
  • many do not check for the 00 prefix, which actually should be valid as well
  • etc.

There's a whole range of different formats in the isMobilePhone, which IMHO should be made a bit more consistent, across all of the different countries (or locales in this case).

However fixing that would be a whole new thingon its own, which I could try to tackle soon as well - the only problem I see is that there are a lot of unmerged PRs in regards to the isMobilePhone, so I am not sure if I should already try to add my changes or wait until these are added?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That is certainly interesting. I don't use phone validation from this library, so I haven't looked much into that side of things. This should definitely be fixed somehow. Could you post this as a new issue?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, I'll write something up later today and post as a separate issue, so that we can track this better

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, let's track this as a separate issue, did you post it? Will definitely be a breaking change but a necessary one.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@profnandaa yeah, had posted it as #2124

WikiRik
WikiRik previously approved these changes Dec 13, 2022
rubiin
rubiin previously approved these changes Jan 21, 2023
@rubiinrubiin added ready-to-land For PRs that are reviewed and ready to be landed ✅ LGTM labels Jan 21, 2023
profnandaa
profnandaa previously approved these changes Jan 22, 2023

@profnandaaprofnandaa left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@profnandaaprofnandaa added mc-to-land Just merge-conflict standing between the PR and landing. and removed ready-to-land For PRs that are reviewed and ready to be landed labels Jan 22, 2023
Panagiotis Papadopoulos added 2 commits January 29, 2023 00:29
The RegExp and corresponding tests were testing a wrong format.
Correct format can be found in the numbering plan:
https://web.archive.org/web/20220614004138/https://cam.gov.mv/docs/Numbering_plan.pdf
fixes issue validatorjs#2101
@pano9000
pano9000 dismissed stale reviews from profnandaa, rubiin, and WikiRik via fba5b32January 28, 2023 23:31
@pano9000
pano9000force-pushed the hotfix-isMobilePhone-#2101 branch from c97c42c to fba5b32CompareJanuary 28, 2023 23:31
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✅ LGTMmc-to-landJust merge-conflict standing between the PR and landing.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Incorrect validation for Maldives phone numbers

5 participants

@pano9000@profnandaa@braaar@rubiin@WikiRik
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(isMobilePhone): Fix wrong dv-MV mobile phone matching (issue #2101) - #2109

Merged
profnandaa merged 2 commits into
validatorjs:masterfrom
pano9000:hotfix-isMobilePhone-#2101
Jan 29, 2023
Merged

fix(isMobilePhone): Fix wrong dv-MV mobile phone matching (issue #2101)#2109
profnandaa merged 2 commits into
validatorjs:masterfrom
pano9000:hotfix-isMobilePhone-#2101

Conversation

@pano9000

Copy link
Copy Markdown
Contributor

Hello,

As reported in #2101, isMobilePhone's dv-MV locale is not matching actually correct mobile phone numbers currently.

See my comments there, which show that that the original RegExp was wrong since it was originally committed, last October:
#2101 (comment)

The new RegExp is now based on the official "numbering plan" document from the Maldives Gov
(I've used the archived wayback machine's link, just in case the "live" document above changes in the future, as they seem to be updating that document regularly. Live version can be found here, dated June 2022, as of today).

In there they describe the following ranges as valid mobile phone ranges:
72X XXXX to 79X XXXX
91X XXXX to 99X XXXX

Further examples can also be found in the comment above.

This PR fixes#2101
I also updated the tests accordingly, as the previous tests of course are not valid either anymore.

Potential room for improvement here (but I feel like that maybe should be a separate PR as it is more a feature maybe?):
Also account for "local formatting" of the number - i.e. it appears to be common to use a space or hyphen, separating the (non international) digits into two blocks, e.g.

  • 722 1234
  • 723-4567

I'll create a separate PR for this, after this fix has been pulled in

Thank you

Checklist

  • PR contains only changes related; no stray files, etc.
  • README updated (where applicable)
  • Tests written (where applicable)

@codecov

codecovBot commented Dec 2, 2022

Copy link
Copy Markdown

Codecov Report

Base: 100.00% // Head: 100.00% // No change to project coverage 👍

Coverage data is based on head (fba5b32) compared to base (f97e8d4).
Patch has no changes to coverable lines.

Additional details and impacted files
@@ Coverage Diff @@## master #2109 +/- ##
=========================================
Coverage 100.00% 100.00% =========================================
Files 105 105 Lines 2335 2335 Branches 586 586 =========================================
Hits 2335 2335 
Impacted FilesCoverage Δ
src/lib/isMobilePhone.js100.00% <ø> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

☔ View full report at Codecov.
📢 Do you have feedback about the report comment? Let us know in this issue.

Comment threadtest/validators.js
Comment on lines +9531 to +9534
'9609112345',
'9609958973',
'9607212963',
'9607986963',

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are these really valid? It seems strange to have a country code there without any indicator that it is a country code (+ or 00, for example). I couldn't find any examples of numbers like this from your links.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for your comment, as you make a valid point.

Strictly speaking:
no, these are not valid phone numbers, if there is no + or 00 in front of the country code.

However, I just tried to stick to the same RegExp style like (most if not almost all) the other phone numbers, which are making the + optional, when you don't set the strictMode option to true.
And I just included these technically invalid phone numbers in the tests as well, to test that this "optional" matching works as well :-)

E.g. random examples from isMobilePhone.js:

  • nn-NO currently uses /^(\+?47)?[49]\d{7}$/
  • el-GR currently used /^(\+?30|0)?(69\d{8})$/

both of these will match phone numbers without 00 or + as valid.

a big side note on this topic

Generally speaking the isMobilePhone RegExp do not seem to be very constistent altogether in the way the RegExp are matching the phone numbers:

  • some are checking for the + as mandatory (regardless of strictMode)
  • some are checking for the + as optional
  • many do not check for the 00 prefix, which actually should be valid as well
  • etc.

There's a whole range of different formats in the isMobilePhone, which IMHO should be made a bit more consistent, across all of the different countries (or locales in this case).

However fixing that would be a whole new thingon its own, which I could try to tackle soon as well - the only problem I see is that there are a lot of unmerged PRs in regards to the isMobilePhone, so I am not sure if I should already try to add my changes or wait until these are added?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That is certainly interesting. I don't use phone validation from this library, so I haven't looked much into that side of things. This should definitely be fixed somehow. Could you post this as a new issue?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, I'll write something up later today and post as a separate issue, so that we can track this better

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, let's track this as a separate issue, did you post it? Will definitely be a breaking change but a necessary one.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@profnandaa yeah, had posted it as #2124

WikiRik
WikiRik previously approved these changes Dec 13, 2022
rubiin
rubiin previously approved these changes Jan 21, 2023
@rubiinrubiin added ready-to-land For PRs that are reviewed and ready to be landed ✅ LGTM labels Jan 21, 2023
profnandaa
profnandaa previously approved these changes Jan 22, 2023

@profnandaaprofnandaa left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@profnandaaprofnandaa added mc-to-land Just merge-conflict standing between the PR and landing. and removed ready-to-land For PRs that are reviewed and ready to be landed labels Jan 22, 2023
Panagiotis Papadopoulos added 2 commits January 29, 2023 00:29
The RegExp and corresponding tests were testing a wrong format.
Correct format can be found in the numbering plan:
https://web.archive.org/web/20220614004138/https://cam.gov.mv/docs/Numbering_plan.pdf
fixes issue validatorjs#2101
@pano9000
pano9000 dismissed stale reviews from profnandaa, rubiin, and WikiRik via fba5b32January 28, 2023 23:31
@pano9000
pano9000force-pushed the hotfix-isMobilePhone-#2101 branch from c97c42c to fba5b32CompareJanuary 28, 2023 23:31
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✅ LGTMmc-to-landJust merge-conflict standing between the PR and landing.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Incorrect validation for Maldives phone numbers

5 participants

@pano9000@profnandaa@braaar@rubiin@WikiRik
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

fix(isMobilePhone): Fix wrong dv-MV mobile phone matching (issue #2101) - #2109

Merged
profnandaa merged 2 commits into
validatorjs:masterfrom
pano9000:hotfix-isMobilePhone-#2101
Jan 29, 2023
Merged

fix(isMobilePhone): Fix wrong dv-MV mobile phone matching (issue #2101)#2109
profnandaa merged 2 commits into
validatorjs:masterfrom
pano9000:hotfix-isMobilePhone-#2101

Conversation

@pano9000

Copy link
Copy Markdown
Contributor

Hello,

As reported in #2101, isMobilePhone's dv-MV locale is not matching actually correct mobile phone numbers currently.

See my comments there, which show that that the original RegExp was wrong since it was originally committed, last October:
#2101 (comment)

The new RegExp is now based on the official "numbering plan" document from the Maldives Gov
(I've used the archived wayback machine's link, just in case the "live" document above changes in the future, as they seem to be updating that document regularly. Live version can be found here, dated June 2022, as of today).

In there they describe the following ranges as valid mobile phone ranges:
72X XXXX to 79X XXXX
91X XXXX to 99X XXXX

Further examples can also be found in the comment above.

This PR fixes#2101
I also updated the tests accordingly, as the previous tests of course are not valid either anymore.

Potential room for improvement here (but I feel like that maybe should be a separate PR as it is more a feature maybe?):
Also account for "local formatting" of the number - i.e. it appears to be common to use a space or hyphen, separating the (non international) digits into two blocks, e.g.

  • 722 1234
  • 723-4567

I'll create a separate PR for this, after this fix has been pulled in

Thank you

Checklist

  • PR contains only changes related; no stray files, etc.
  • README updated (where applicable)
  • Tests written (where applicable)

@codecov

codecovBot commented Dec 2, 2022

Copy link
Copy Markdown

Codecov Report

Base: 100.00% // Head: 100.00% // No change to project coverage 👍

Coverage data is based on head (fba5b32) compared to base (f97e8d4).
Patch has no changes to coverable lines.

Additional details and impacted files
@@ Coverage Diff @@## master #2109 +/- ##
=========================================
Coverage 100.00% 100.00% =========================================
Files 105 105 Lines 2335 2335 Branches 586 586 =========================================
Hits 2335 2335 
Impacted FilesCoverage Δ
src/lib/isMobilePhone.js100.00% <ø> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

☔ View full report at Codecov.
📢 Do you have feedback about the report comment? Let us know in this issue.

Comment threadtest/validators.js
Comment on lines +9531 to +9534
'9609112345',
'9609958973',
'9607212963',
'9607986963',

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are these really valid? It seems strange to have a country code there without any indicator that it is a country code (+ or 00, for example). I couldn't find any examples of numbers like this from your links.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for your comment, as you make a valid point.

Strictly speaking:
no, these are not valid phone numbers, if there is no + or 00 in front of the country code.

However, I just tried to stick to the same RegExp style like (most if not almost all) the other phone numbers, which are making the + optional, when you don't set the strictMode option to true.
And I just included these technically invalid phone numbers in the tests as well, to test that this "optional" matching works as well :-)

E.g. random examples from isMobilePhone.js:

  • nn-NO currently uses /^(\+?47)?[49]\d{7}$/
  • el-GR currently used /^(\+?30|0)?(69\d{8})$/

both of these will match phone numbers without 00 or + as valid.

a big side note on this topic

Generally speaking the isMobilePhone RegExp do not seem to be very constistent altogether in the way the RegExp are matching the phone numbers:

  • some are checking for the + as mandatory (regardless of strictMode)
  • some are checking for the + as optional
  • many do not check for the 00 prefix, which actually should be valid as well
  • etc.

There's a whole range of different formats in the isMobilePhone, which IMHO should be made a bit more consistent, across all of the different countries (or locales in this case).

However fixing that would be a whole new thingon its own, which I could try to tackle soon as well - the only problem I see is that there are a lot of unmerged PRs in regards to the isMobilePhone, so I am not sure if I should already try to add my changes or wait until these are added?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That is certainly interesting. I don't use phone validation from this library, so I haven't looked much into that side of things. This should definitely be fixed somehow. Could you post this as a new issue?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, I'll write something up later today and post as a separate issue, so that we can track this better

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, let's track this as a separate issue, did you post it? Will definitely be a breaking change but a necessary one.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@profnandaa yeah, had posted it as #2124

WikiRik
WikiRik previously approved these changes Dec 13, 2022
rubiin
rubiin previously approved these changes Jan 21, 2023
@rubiinrubiin added ready-to-land For PRs that are reviewed and ready to be landed ✅ LGTM labels Jan 21, 2023
profnandaa
profnandaa previously approved these changes Jan 22, 2023

@profnandaaprofnandaa left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@profnandaaprofnandaa added mc-to-land Just merge-conflict standing between the PR and landing. and removed ready-to-land For PRs that are reviewed and ready to be landed labels Jan 22, 2023
Panagiotis Papadopoulos added 2 commits January 29, 2023 00:29
The RegExp and corresponding tests were testing a wrong format.
Correct format can be found in the numbering plan:
https://web.archive.org/web/20220614004138/https://cam.gov.mv/docs/Numbering_plan.pdf
fixes issue validatorjs#2101
@pano9000
pano9000 dismissed stale reviews from profnandaa, rubiin, and WikiRik via fba5b32January 28, 2023 23:31
@pano9000
pano9000force-pushed the hotfix-isMobilePhone-#2101 branch from c97c42c to fba5b32CompareJanuary 28, 2023 23:31
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✅ LGTMmc-to-landJust merge-conflict standing between the PR and landing.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Incorrect validation for Maldives phone numbers

5 participants

@pano9000@profnandaa@braaar@rubiin@WikiRik
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(isMobilePhone): Fix wrong dv-MV mobile phone matching (issue #2101) - #2109

Merged
profnandaa merged 2 commits into
validatorjs:masterfrom
pano9000:hotfix-isMobilePhone-#2101
Jan 29, 2023
Merged

fix(isMobilePhone): Fix wrong dv-MV mobile phone matching (issue #2101)#2109
profnandaa merged 2 commits into
validatorjs:masterfrom
pano9000:hotfix-isMobilePhone-#2101

Conversation

@pano9000

Copy link
Copy Markdown
Contributor

Hello,

As reported in #2101, isMobilePhone's dv-MV locale is not matching actually correct mobile phone numbers currently.

See my comments there, which show that that the original RegExp was wrong since it was originally committed, last October:
#2101 (comment)

The new RegExp is now based on the official "numbering plan" document from the Maldives Gov
(I've used the archived wayback machine's link, just in case the "live" document above changes in the future, as they seem to be updating that document regularly. Live version can be found here, dated June 2022, as of today).

In there they describe the following ranges as valid mobile phone ranges:
72X XXXX to 79X XXXX
91X XXXX to 99X XXXX

Further examples can also be found in the comment above.

This PR fixes#2101
I also updated the tests accordingly, as the previous tests of course are not valid either anymore.

Potential room for improvement here (but I feel like that maybe should be a separate PR as it is more a feature maybe?):
Also account for "local formatting" of the number - i.e. it appears to be common to use a space or hyphen, separating the (non international) digits into two blocks, e.g.

  • 722 1234
  • 723-4567

I'll create a separate PR for this, after this fix has been pulled in

Thank you

Checklist

  • PR contains only changes related; no stray files, etc.
  • README updated (where applicable)
  • Tests written (where applicable)

@codecov

codecovBot commented Dec 2, 2022

Copy link
Copy Markdown

Codecov Report

Base: 100.00% // Head: 100.00% // No change to project coverage 👍

Coverage data is based on head (fba5b32) compared to base (f97e8d4).
Patch has no changes to coverable lines.

Additional details and impacted files
@@ Coverage Diff @@## master #2109 +/- ##
=========================================
Coverage 100.00% 100.00% =========================================
Files 105 105 Lines 2335 2335 Branches 586 586 =========================================
Hits 2335 2335 
Impacted FilesCoverage Δ
src/lib/isMobilePhone.js100.00% <ø> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

☔ View full report at Codecov.
📢 Do you have feedback about the report comment? Let us know in this issue.

Comment threadtest/validators.js
Comment on lines +9531 to +9534
'9609112345',
'9609958973',
'9607212963',
'9607986963',

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are these really valid? It seems strange to have a country code there without any indicator that it is a country code (+ or 00, for example). I couldn't find any examples of numbers like this from your links.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for your comment, as you make a valid point.

Strictly speaking:
no, these are not valid phone numbers, if there is no + or 00 in front of the country code.

However, I just tried to stick to the same RegExp style like (most if not almost all) the other phone numbers, which are making the + optional, when you don't set the strictMode option to true.
And I just included these technically invalid phone numbers in the tests as well, to test that this "optional" matching works as well :-)

E.g. random examples from isMobilePhone.js:

  • nn-NO currently uses /^(\+?47)?[49]\d{7}$/
  • el-GR currently used /^(\+?30|0)?(69\d{8})$/

both of these will match phone numbers without 00 or + as valid.

a big side note on this topic

Generally speaking the isMobilePhone RegExp do not seem to be very constistent altogether in the way the RegExp are matching the phone numbers:

  • some are checking for the + as mandatory (regardless of strictMode)
  • some are checking for the + as optional
  • many do not check for the 00 prefix, which actually should be valid as well
  • etc.

There's a whole range of different formats in the isMobilePhone, which IMHO should be made a bit more consistent, across all of the different countries (or locales in this case).

However fixing that would be a whole new thingon its own, which I could try to tackle soon as well - the only problem I see is that there are a lot of unmerged PRs in regards to the isMobilePhone, so I am not sure if I should already try to add my changes or wait until these are added?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That is certainly interesting. I don't use phone validation from this library, so I haven't looked much into that side of things. This should definitely be fixed somehow. Could you post this as a new issue?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, I'll write something up later today and post as a separate issue, so that we can track this better

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, let's track this as a separate issue, did you post it? Will definitely be a breaking change but a necessary one.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@profnandaa yeah, had posted it as #2124

WikiRik
WikiRik previously approved these changes Dec 13, 2022
rubiin
rubiin previously approved these changes Jan 21, 2023
@rubiinrubiin added ready-to-land For PRs that are reviewed and ready to be landed ✅ LGTM labels Jan 21, 2023
profnandaa
profnandaa previously approved these changes Jan 22, 2023

@profnandaaprofnandaa left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@profnandaaprofnandaa added mc-to-land Just merge-conflict standing between the PR and landing. and removed ready-to-land For PRs that are reviewed and ready to be landed labels Jan 22, 2023
Panagiotis Papadopoulos added 2 commits January 29, 2023 00:29
The RegExp and corresponding tests were testing a wrong format.
Correct format can be found in the numbering plan:
https://web.archive.org/web/20220614004138/https://cam.gov.mv/docs/Numbering_plan.pdf
fixes issue validatorjs#2101
@pano9000
pano9000 dismissed stale reviews from profnandaa, rubiin, and WikiRik via fba5b32January 28, 2023 23:31
@pano9000
pano9000force-pushed the hotfix-isMobilePhone-#2101 branch from c97c42c to fba5b32CompareJanuary 28, 2023 23:31
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✅ LGTMmc-to-landJust merge-conflict standing between the PR and landing.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Incorrect validation for Maldives phone numbers

5 participants

@pano9000@profnandaa@braaar@rubiin@WikiRik
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(isMobilePhone): Fix wrong dv-MV mobile phone matching (issue #2101) - #2109

Merged
profnandaa merged 2 commits into
validatorjs:masterfrom
pano9000:hotfix-isMobilePhone-#2101
Jan 29, 2023
Merged

fix(isMobilePhone): Fix wrong dv-MV mobile phone matching (issue #2101)#2109
profnandaa merged 2 commits into
validatorjs:masterfrom
pano9000:hotfix-isMobilePhone-#2101

Conversation

@pano9000

Copy link
Copy Markdown
Contributor

Hello,

As reported in #2101, isMobilePhone's dv-MV locale is not matching actually correct mobile phone numbers currently.

See my comments there, which show that that the original RegExp was wrong since it was originally committed, last October:
#2101 (comment)

The new RegExp is now based on the official "numbering plan" document from the Maldives Gov
(I've used the archived wayback machine's link, just in case the "live" document above changes in the future, as they seem to be updating that document regularly. Live version can be found here, dated June 2022, as of today).

In there they describe the following ranges as valid mobile phone ranges:
72X XXXX to 79X XXXX
91X XXXX to 99X XXXX

Further examples can also be found in the comment above.

This PR fixes#2101
I also updated the tests accordingly, as the previous tests of course are not valid either anymore.

Potential room for improvement here (but I feel like that maybe should be a separate PR as it is more a feature maybe?):
Also account for "local formatting" of the number - i.e. it appears to be common to use a space or hyphen, separating the (non international) digits into two blocks, e.g.

  • 722 1234
  • 723-4567

I'll create a separate PR for this, after this fix has been pulled in

Thank you

Checklist

  • PR contains only changes related; no stray files, etc.
  • README updated (where applicable)
  • Tests written (where applicable)

@codecov

codecovBot commented Dec 2, 2022

Copy link
Copy Markdown

Codecov Report

Base: 100.00% // Head: 100.00% // No change to project coverage 👍

Coverage data is based on head (fba5b32) compared to base (f97e8d4).
Patch has no changes to coverable lines.

Additional details and impacted files
@@ Coverage Diff @@## master #2109 +/- ##
=========================================
Coverage 100.00% 100.00% =========================================
Files 105 105 Lines 2335 2335 Branches 586 586 =========================================
Hits 2335 2335 
Impacted FilesCoverage Δ
src/lib/isMobilePhone.js100.00% <ø> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

☔ View full report at Codecov.
📢 Do you have feedback about the report comment? Let us know in this issue.

Comment threadtest/validators.js
Comment on lines +9531 to +9534
'9609112345',
'9609958973',
'9607212963',
'9607986963',

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are these really valid? It seems strange to have a country code there without any indicator that it is a country code (+ or 00, for example). I couldn't find any examples of numbers like this from your links.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for your comment, as you make a valid point.

Strictly speaking:
no, these are not valid phone numbers, if there is no + or 00 in front of the country code.

However, I just tried to stick to the same RegExp style like (most if not almost all) the other phone numbers, which are making the + optional, when you don't set the strictMode option to true.
And I just included these technically invalid phone numbers in the tests as well, to test that this "optional" matching works as well :-)

E.g. random examples from isMobilePhone.js:

  • nn-NO currently uses /^(\+?47)?[49]\d{7}$/
  • el-GR currently used /^(\+?30|0)?(69\d{8})$/

both of these will match phone numbers without 00 or + as valid.

a big side note on this topic

Generally speaking the isMobilePhone RegExp do not seem to be very constistent altogether in the way the RegExp are matching the phone numbers:

  • some are checking for the + as mandatory (regardless of strictMode)
  • some are checking for the + as optional
  • many do not check for the 00 prefix, which actually should be valid as well
  • etc.

There's a whole range of different formats in the isMobilePhone, which IMHO should be made a bit more consistent, across all of the different countries (or locales in this case).

However fixing that would be a whole new thingon its own, which I could try to tackle soon as well - the only problem I see is that there are a lot of unmerged PRs in regards to the isMobilePhone, so I am not sure if I should already try to add my changes or wait until these are added?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That is certainly interesting. I don't use phone validation from this library, so I haven't looked much into that side of things. This should definitely be fixed somehow. Could you post this as a new issue?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, I'll write something up later today and post as a separate issue, so that we can track this better

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, let's track this as a separate issue, did you post it? Will definitely be a breaking change but a necessary one.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@profnandaa yeah, had posted it as #2124

WikiRik
WikiRik previously approved these changes Dec 13, 2022
rubiin
rubiin previously approved these changes Jan 21, 2023
@rubiinrubiin added ready-to-land For PRs that are reviewed and ready to be landed ✅ LGTM labels Jan 21, 2023
profnandaa
profnandaa previously approved these changes Jan 22, 2023

@profnandaaprofnandaa left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@profnandaaprofnandaa added mc-to-land Just merge-conflict standing between the PR and landing. and removed ready-to-land For PRs that are reviewed and ready to be landed labels Jan 22, 2023
Panagiotis Papadopoulos added 2 commits January 29, 2023 00:29
The RegExp and corresponding tests were testing a wrong format.
Correct format can be found in the numbering plan:
https://web.archive.org/web/20220614004138/https://cam.gov.mv/docs/Numbering_plan.pdf
fixes issue validatorjs#2101
@pano9000
pano9000 dismissed stale reviews from profnandaa, rubiin, and WikiRik via fba5b32January 28, 2023 23:31
@pano9000
pano9000force-pushed the hotfix-isMobilePhone-#2101 branch from c97c42c to fba5b32CompareJanuary 28, 2023 23:31
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✅ LGTMmc-to-landJust merge-conflict standing between the PR and landing.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Incorrect validation for Maldives phone numbers

5 participants

@pano9000@profnandaa@braaar@rubiin@WikiRik
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

fix(isMobilePhone): Fix wrong dv-MV mobile phone matching (issue #2101) - #2109

Merged
profnandaa merged 2 commits into
validatorjs:masterfrom
pano9000:hotfix-isMobilePhone-#2101
Jan 29, 2023
Merged

fix(isMobilePhone): Fix wrong dv-MV mobile phone matching (issue #2101)#2109
profnandaa merged 2 commits into
validatorjs:masterfrom
pano9000:hotfix-isMobilePhone-#2101

Conversation

@pano9000

Copy link
Copy Markdown
Contributor

Hello,

As reported in #2101, isMobilePhone's dv-MV locale is not matching actually correct mobile phone numbers currently.

See my comments there, which show that that the original RegExp was wrong since it was originally committed, last October:
#2101 (comment)

The new RegExp is now based on the official "numbering plan" document from the Maldives Gov
(I've used the archived wayback machine's link, just in case the "live" document above changes in the future, as they seem to be updating that document regularly. Live version can be found here, dated June 2022, as of today).

In there they describe the following ranges as valid mobile phone ranges:
72X XXXX to 79X XXXX
91X XXXX to 99X XXXX

Further examples can also be found in the comment above.

This PR fixes#2101
I also updated the tests accordingly, as the previous tests of course are not valid either anymore.

Potential room for improvement here (but I feel like that maybe should be a separate PR as it is more a feature maybe?):
Also account for "local formatting" of the number - i.e. it appears to be common to use a space or hyphen, separating the (non international) digits into two blocks, e.g.

  • 722 1234
  • 723-4567

I'll create a separate PR for this, after this fix has been pulled in

Thank you

Checklist

  • PR contains only changes related; no stray files, etc.
  • README updated (where applicable)
  • Tests written (where applicable)

@codecov

codecovBot commented Dec 2, 2022

Copy link
Copy Markdown

Codecov Report

Base: 100.00% // Head: 100.00% // No change to project coverage 👍

Coverage data is based on head (fba5b32) compared to base (f97e8d4).
Patch has no changes to coverable lines.

Additional details and impacted files
@@ Coverage Diff @@## master #2109 +/- ##
=========================================
Coverage 100.00% 100.00% =========================================
Files 105 105 Lines 2335 2335 Branches 586 586 =========================================
Hits 2335 2335 
Impacted FilesCoverage Δ
src/lib/isMobilePhone.js100.00% <ø> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

☔ View full report at Codecov.
📢 Do you have feedback about the report comment? Let us know in this issue.

Comment threadtest/validators.js
Comment on lines +9531 to +9534
'9609112345',
'9609958973',
'9607212963',
'9607986963',

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are these really valid? It seems strange to have a country code there without any indicator that it is a country code (+ or 00, for example). I couldn't find any examples of numbers like this from your links.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for your comment, as you make a valid point.

Strictly speaking:
no, these are not valid phone numbers, if there is no + or 00 in front of the country code.

However, I just tried to stick to the same RegExp style like (most if not almost all) the other phone numbers, which are making the + optional, when you don't set the strictMode option to true.
And I just included these technically invalid phone numbers in the tests as well, to test that this "optional" matching works as well :-)

E.g. random examples from isMobilePhone.js:

  • nn-NO currently uses /^(\+?47)?[49]\d{7}$/
  • el-GR currently used /^(\+?30|0)?(69\d{8})$/

both of these will match phone numbers without 00 or + as valid.

a big side note on this topic

Generally speaking the isMobilePhone RegExp do not seem to be very constistent altogether in the way the RegExp are matching the phone numbers:

  • some are checking for the + as mandatory (regardless of strictMode)
  • some are checking for the + as optional
  • many do not check for the 00 prefix, which actually should be valid as well
  • etc.

There's a whole range of different formats in the isMobilePhone, which IMHO should be made a bit more consistent, across all of the different countries (or locales in this case).

However fixing that would be a whole new thingon its own, which I could try to tackle soon as well - the only problem I see is that there are a lot of unmerged PRs in regards to the isMobilePhone, so I am not sure if I should already try to add my changes or wait until these are added?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That is certainly interesting. I don't use phone validation from this library, so I haven't looked much into that side of things. This should definitely be fixed somehow. Could you post this as a new issue?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, I'll write something up later today and post as a separate issue, so that we can track this better

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, let's track this as a separate issue, did you post it? Will definitely be a breaking change but a necessary one.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@profnandaa yeah, had posted it as #2124

WikiRik
WikiRik previously approved these changes Dec 13, 2022
rubiin
rubiin previously approved these changes Jan 21, 2023
@rubiinrubiin added ready-to-land For PRs that are reviewed and ready to be landed ✅ LGTM labels Jan 21, 2023
profnandaa
profnandaa previously approved these changes Jan 22, 2023

@profnandaaprofnandaa left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@profnandaaprofnandaa added mc-to-land Just merge-conflict standing between the PR and landing. and removed ready-to-land For PRs that are reviewed and ready to be landed labels Jan 22, 2023
Panagiotis Papadopoulos added 2 commits January 29, 2023 00:29
The RegExp and corresponding tests were testing a wrong format.
Correct format can be found in the numbering plan:
https://web.archive.org/web/20220614004138/https://cam.gov.mv/docs/Numbering_plan.pdf
fixes issue validatorjs#2101
@pano9000
pano9000 dismissed stale reviews from profnandaa, rubiin, and WikiRik via fba5b32January 28, 2023 23:31
@pano9000
pano9000force-pushed the hotfix-isMobilePhone-#2101 branch from c97c42c to fba5b32CompareJanuary 28, 2023 23:31
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✅ LGTMmc-to-landJust merge-conflict standing between the PR and landing.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Incorrect validation for Maldives phone numbers

5 participants

@pano9000@profnandaa@braaar@rubiin@WikiRik