- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-26-2022 10:06 AM
So I have a requirement to allow URLs, No spaces and comma delimited. A dash "-" is allowed just not at beginning or beside a period "." And lastly * is only available in the first portion of the URL. I have create a regular expression that passes via regex101, but in my ServiceNow instance it fails.
Pass would be:
www.test.com
www.example.com,www-01.user.com,www.user-test.com,*.example.com
*.example.com,test.user.com
Fail:
www*.example.com
-www.example.com
www-.example.com
www.-example.com
Here is my RegEx:
^(([a-zA-Z0-9-]{1,}[a-zA-Z0-9]{1,150}\.[a-zA-Z0-9]{1,150}[a-zA-Z0-9-]{1,150}\.[a-zA-Z0-9]{1,150})|^([*]{1,1}\.[a-zA-Z0-9]{1,150}[a-zA-Z0-9-]{1,150}\.[a-zA-Z0-9]{1,150}))|((\,[a-zA-Z0-9-]{1,}[a-zA-Z0-9]{1,150}\.[a-zA-Z0-9]{1,150}[a-zA-Z0-9-]{1,150}\.[a-zA-Z0-9]{1,150})|(\,[*]{1,1}\.[a-zA-Z0-9]{1,150}[a-zA-Z0-9-]{1,150}\.[a-zA-Z0-9]{1,150}))
Solved! Go to Solution.
- Labels:
-
Scripting and Coding
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-31-2022 04:08 AM
I got the Client script version to work, the user can enter values in a single field and the array works perfect. The script you posted the test line was backwards.
if (!urlArray[x].test(re))
should actually be (!re.test(urlArray[x])) and then it worked perfectly. Also I mistakenly had a return true from the client script Yousaf provided below. I also got the - to work in beginning and not near a . and I got only the since * to work. Here is my final solution.
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue == '') {
return;
}
var urlArray = [];
var urlField = g_form.getValue('provide_url');
urlArray = urlField.split(',');
// This will restrict the usages of certain special characters.
var re = /^(([a-zA-Z0-9-]{1,}[a-zA-Z0-9]{1,}\.[a-zA-Z0-9]{1,}[a-zA-Z0-9-]{1,150}\.[a-zA-Z0-9]{1,})|^([*]{1,1}\.[a-zA-Z0-9]{1,}[a-zA-Z0-9-]{1,}\.[a-zA-Z0-9]{1,}))$/;
for (var x = 0; x < urlArray.length; x++) {
if (!re.test(urlArray[x])) {
g_form.showFieldMsg('provide_url','Invalid URL entry, please exclude slashes, colons and spaces.','error');
return false;
}
}
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-26-2022 01:22 PM
Yes I pasted in RegEx101 and yours works fine. But for some reason in SN in the Variable Validation RegEx and I assign to field in Catalog Item, the field rejects it. And it is a simple string field. That is my issue I can't figure out.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-26-2022 01:33 PM
thats weird but did you try writing in catalog client script?
***Mark Correct or Helpful if it helps.***
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-26-2022 01:35 PM
Something like this
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
var re = /^(([a-zA-Z0-9]{1,}[a-zA-Z0-9]{1,150}\.[a-zA-Z0-9]{1,150}[a-zA-Z0-9-]{1,150}\.[a-zA-Z0-9]{1,150})|^([*]{1,1}\.[a-zA-Z0-9]{1,150}[a-zA-Z0-9-]{1,150}\.[a-zA-
Z0-9]{1,150}))|((\,[a-zA-Z0-9-]{1,}[a-zA-Z0-9]{1,150}\.[a-zA-Z0-9]{1,150}[a-zA-Z0-9-]{1,150}\.[a-zA-Z0-9]{1,150})|(\,[*]{1,1}\.[a-zA-Z0-9]{1,150}[a-zA-Z0-
9-]{1,150}\.[a-zA-Z0-9]{1,150}))$/;
if (!re.test(newValue)) {
g_form.showFieldMsg('your_field name', 'Please enter a valid email address', 'error');
return false;
}
return true;
}
***Mark Correct or Helpful if it helps.***
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-26-2022 01:51 PM
The client script works, but it is allowing some comma delimited I do not want. If it is at then end such as:
www.user.com,www-www.text.com,www.w-user.com,*.example.com,www*.example.com,-www.example.com
The last two should cause the script to fail as they do not pass, but they are being accepted.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-31-2022 04:11 AM
Thank you Yousaf and Sasha for helping work through my issue I really appreciate it.
