Я работаю над веб-формой, в которой пользователи должны вводить текст, который должен содержать только латинские символы, включая расширенные латинские символы (например, ñ, é, ü и т. д.), но должен исключать любые нелатинские символы (например, кириллицу, китайский, арабский и др.). Я хочу использовать атрибут шаблона HTML5 для элемента, чтобы обеспечить эту проверку на стороне клиента.
До сих пор я пытался использовать шаблон регулярного выражения, такой как ^[A-Za-z]+$, для соответствия латинским символам, но это не включает расширенные латинские символы. Вот код, который у меня сейчас есть:
<input type = "text" pattern = "^[A-Za-z]+$" title = "Please enter Latin characters only">
Это хорошо работает для основных латинских букв, но не позволяет проверить расширенные латинские символы. Я ищу способ изменить этот шаблон, включив в него все латинские символы, включая расширенные.
Может ли кто-нибудь помочь мне с правильным шаблоном регулярного выражения для этой цели? Кроме того, существуют ли какие-либо потенциальные ловушки или соображения, о которых мне следует знать при использовании атрибута шаблона для этого типа проверки?






Существует интересная работа, в которой вы должны просто использовать \p{sc=Latin}* в качестве шаблона для идентификации всех расширенных латинских символов, вы также должны иметь возможность указать его на основе тега Unicode Script (wiki здесь). Просто убедитесь, что список по умолчанию охватывает все, что вам нужно.
@tony, мне удалось запустить его в чистом HTML без использования Javascript - onecompiler.com/html/427q8nbvx возможно, мне не хватает чего-то еще, что было включено в компиляцию, но это должно работать
Однако это не работает с числами: если я попытаюсь включить числа и другие расширенные символы, это не сработает.
@tony это все еще регулярное выражение? вы можете расширить регистр, чтобы он также работал с числами, используя [\p{sc=Latin}\d]*, и, как я упоминал ранее, вы можете использовать вики-сайт Unicode, чтобы указать, какие буквы вы хотите принимать или отклонять, пример кода по-прежнему работает со всеми имеющимися у вас символами приведены в качестве примера, какие из них не работают?
Ответ: [\p{sc=Latin}\p{Nd}\p{P}\p{S}]+
Я попробовал это, но экранирование свойств Unicode, похоже, не поддерживается браузерами. если бы я переключился на JavaScript, это было бы правильное решение.