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

Viewed 50

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

2 Answers

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]));
}

Related