Как написать выражение регулярного выражения, чтобы проверить действительный элемент XML NCName в JavaScript? - PullRequest
1 голос
/ 07 марта 2019

NCNam означает, что он должен начинаться с буквы или символа подчеркивания и может содержать только буквы, цифры, подчеркивания, дефисы и точки. Я пытался написать регулярное выражение, как это, но я думаю, что это может быть неправильно.

if(/^([_]|[a-zA-Z]+[\w\W])$/.test('abc' ))  console.log('match')

Ответы [ 2 ]

2 голосов
/ 07 марта 2019

должен начинаться с буквы или подчеркивания

Совпадение первого символа с [a-z_]

и может содержать только буквы, цифры, знаки подчеркивания, дефисы и точки

Используйте класс символов, содержащий все из них. Обратите внимание, что буквы, цифры и символы подчеркивания вместе составляют представление «символ слова», поэтому вы можете использовать \w вместо того, чтобы писать их отдельно.

В полном объеме:

/^[a-z_][\w.-]*$/i
2 голосов
/ 07 марта 2019

Ваш шаблон ^([_]|[a-zA-Z]+[\w\W])$ соответствует строке, равной _ ([_]) или (|), состоит из 1+ букв ([a-zA-Z]+), за которыми следует любой символ ([\w\W]),Таким образом, он не может проверить строки указанного вами типа.

Вы можете использовать

/^[a-zA-Z_][\w.-]*$/

См. regex demo и график ( source *)1015 *) ниже:

enter image description here

Подробности

  • ^ - начало строки
  • [a-zA-Z_] - буква или _
  • [\w.-]* - 0 или более букв, цифр, подчеркиваний, точек или дефисов
  • $ - конец строки
...