Контекст:
Я улучшаю пользовательский механизм синтаксического анализа токена и хочу поддерживать символы, цифры и пробелы на разных языках.
В настоящее время это работает с английскими символами и числами сследующее регулярное выражение
var pattern = /\{\{someText\(?(\d+)?\|?([\w\d\s%]+)?\)?[\s\S]+\}\}/;
// this will extract the number and text in a token like
'{{someText(20|Hello World)}}'.match(pattern);
//output
[20, 'Hello World']
Но вышеприведенное регулярное выражение не смогло проанализировать символы на других языках:
'{{someText(20|abcdèfg)}}'.match(pattern);
//output
[20, 'abcd']
Регулярное выражение, которое я пробовал:
Я пытался использовать XRegexp сприведенное ниже регулярное выражение, но похоже, что оно работает не так, как я ожидал.
var pattern = XRegExp(/\{\{customText\(?(\d+)?\|?([[\p{L}\p{N}_]\p{Nd}[\p{Z}\h\v]%]+)?\)?[\s\S]+\}\}/);
'{{someText(20|abcdèfg)}}'.match(pattern);
//output
[20, undefined]
Для нового движка я хочу поддерживать символы и на других языках.Так что текст в
'{{someText(20|abcdèfg)}}'.match(pattern);
будет выводить
[20, abcdèfg]
Формат этого токена всегда похож на {{someText (number | 'Фактический текст')}}