Ответ 1
Это сработало для меня:
/^[a-z\u00E0-\u00FC]+$/i
С помощью здесь
Вот забавный фрагмент, с которым я столкнулся сегодня:
/\ba/.test("a") --> true
/\bà/.test("à") --> false
Однако
/à/.test("à") --> true
Во-первых, wtf?
Во-вторых, если я хочу совместить акцентированный символ в начале слова, как я могу это сделать? (Я бы очень хотел, чтобы избежать использования селекторов сверху, например /(?:^|\s|'|\(\) ....
)
Это сработало для меня:
/^[a-z\u00E0-\u00FC]+$/i
С помощью здесь
Причина, по которой /\bà/.test("à")
не соответствует, заключается в том, что "à" не является символом слова. Управляющая последовательность \b
соответствует только границе символа слова и символу без слова. /\ba/.test("a")
соответствует символу слова "a". Из-за этого существует граница между началом строки (которая не является символом слова) и буквой "a", которая является символом слова.
Символы Word в JavaScript regex определяются как [a-zA-Z0-9_]
.
Чтобы соответствовать акцентированному символу в начале строки, просто используйте символ ^
в начале регулярного выражения (например, /^à/
). Этот символ означает начало строки (в отличие от \b
, которая соответствует любой границе слова в строке). Это самое основное и стандартное регулярное выражение, поэтому оно определенно не поверх.
У также была проблема с символами без символов ASCII в regex, вы можете найти здесь здесь. Они не справляются с границами слов, но, возможно, дают вам полезные советы.
Существует еще одна страница, но он хочет совместить строки, а не слова.
Я не знаю и не нашел теперь, якоря для вашей проблемы, но когда я вижу, какие регулярные выражения монстра в моей первой ссылке используются, ваша группа, которую вы хотите избежать, не находится над вершиной и на мой взгляд, ваше решение.