Home > Software engineering >  how to check string "should not contain leading, trailing, and mutliple commas in middle"
how to check string "should not contain leading, trailing, and mutliple commas in middle"

Time:12-04

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*$

See demo at regex101 or JS demo at tio.run

  • Related