I am able to construct regex for leading and trailing.
(^[,\s] )|([,\s] $)
But I don't know to how to negate it, it should check for non-leading and non-trailing commas.
And it should not contain double or more commas (near to each other) in the middle.
// example - should return following values
1. "orange" - true
2. "apple, orange" - true
3. "apple, orange" - true
4. "apple,orange" - true
5. "apple, orange," - false
6. ",orange, apple" - false
8. "orange,, apple" - false
9. "apple,,orange" - false
Any here does know how to achieve. thanks
CodePudding user response:
I would just use this general pattern:
^[^,] (?:\s*,\s*[^,] )*$
This will match a leading term, containing no commas, followed by zero or more commas then non comma terms.
JavaScript code:
var inputs = ["orange", "apple, orange", "apple, orange", "apple,orange", "apple, orange,", ",orange, apple", "orange,, apple", "apple,,orange"];
for (var i=0; i < inputs.length; i) {
console.log(inputs[i] " => " /^[^,] (?:\s*,\s*[^,] )*$/.test(inputs[i]));
}
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" frameborder="0"></iframe>
CodePudding user response:
You could check if the string does not match this basic pattern:
^\s*,|,\s*,|,\s*$