I'm attempting to validate a field name to match a certain format in JavaScript using Regular Expressions.
I need the string inputted to resemble this:
word\word\word
So anything inputted can't be blank, and it must be three words seperated by a backslash.
This is the code i'm working with, but i'm not sure if the pattern is the right syntax?!!
function validateResourceName() { //get posted resource name value var inputString = document.getElementById("resourceName").value; //should be in the word\word\word format var pattern=/[a-Z|/\\/|a-Z|/\\/|a-Z\s]/; //If the inputString is NOT a match if (!pattern.test(inputString)) { alert("not a match"); } else { alert("match"); } }
Any help will be very appreciated!!!
5 Answers
If by word you mean the English letters a-z in upper or lower case, then:
/^(?:[a-z]+\\){2}[a-z]+$/i That says:
^Beginning of string(?:...)Non-capturing group[a-z]+One or more letters a-z (or A-Z because of theiflag at the end). If you also want to allow some other characters, just add them to the[a-z]after thez. If you want to allow hyphens, add\-to it (you need the backslash, depending on where you put the hyphen, so I just always include it). Note that this is very English-centric, and even in English sometimes people write borrowed words with their non-English letters, such as résumé.\\Backslash{2}Repeated twice- (Then another word)
$End of string
The issues with your expression are:
[a-Z]Is invalid because the range is out of order (Zcomes beforea). If it were valid (or if you wrote[Z-a]), it would matches everything betweenZanda, which isn't justa-zandA-Z\\/Requires a backslash and then a slash|is an alternation (this or that)\sis whitespace
Try /^[a-z]+\\[a-z]+\\[a-z]+$/
function validateResourceName() { //get posted resource name value var inputString = document.getElementById("resourceName").value; //should be in the word\word\word format var pattern=/^[a-z]+\\[a-z]+\\[a-z]+$/ //If the inputString is NOT a match if (!pattern.test(inputString)) { alert("not a match"); } else { alert("match"); } } If you want to allow the word matching to be case insensitive;
`/^[a-z]+\\[a-z]+\\[a-z]+$/i` If you want to be a bit more broad with what you define as a 'word', and allow it to consist of alphanumeric characters and underscore;
`/^\w+\\\w+\\\w+$/i` you can just use this \w+\\\w+\\\w+
or
[a-zA-Z]+(\\[a-zA-Z]+){2} 5Try this one , See the Regex fiddle for regex demo and Jsfiddle for the code demo
Regex
/(\w)*\\(?!\\)(\w)*\\(?!\\)(\w)*(?!\\)/g Javascript
function validateResourceName(string) { var pattern = /(\w)*\\(?!\\)(\w)*\\(?!\\)(\w)*(?!\\)/g; if (!pattern.test(string)) { alert("not a match"); } else { alert("match"); } } 1This should do it
^\w+\\\w+\\\w+$ In javascript
if (/^\w+\\\w+\\\w+$/.test(subject)) { // Successful match } else { // Match attempt failed }