Этот вопрос должен быть более точным: например, вы принимаете пробелы между цифрами? Вы принимаете запятую в начале / конце? Вы принимаете пробел перед запятой? Вы принимаете несколько последовательных пробелов? вы принимаете пробелы в начале / конце?
Я предполагаю, что я считаю наиболее вероятным, так что вы не принимаете пробелы между цифрами, вы не принимаете запятую в начале / конце, но вы принимаете пробел до и после запятой, вы принимаете несколько последовательных пробелов и вы принимаете пробелы в начале / конце.
/^ *([0-9]+( *, *[0-9]+)*)? *$/
- "": верно
- "": правда
- "123": правда
- "123,45": правда
- "123, 45, 67": правда
- "123": правда
- "1 2 3": false
- ", 45": false
- "123": false
Ключ при написании регулярного выражения для сопоставления списку элементов "E", разделенных разделителем "S", заключается в том, что вам непременно придется написать сопоставитель "E" дважды (здесь это просто "[0-9] + ").
- принцип шаблона E (SE) *
- E - это «[0-9] +»: просто последовательность цифр
- S - это "*, *" (обратите внимание на пробелы): запятая с дополнительными пробелами до и после
на данный момент имеем:
/^[0-9]+( *, *[0-9]+)*$/
мы немного улучшили его, поэтому он также принимает пробелы в начале / конце, только пробелы и пустые строки:
/^ *([0-9]+( *, *[0-9]+)*)? *$/
Заметьте, я лично предпочитаю использовать [0-9] вместо \ d, я думаю, что читать не так сложно.