Necesito una expresión regular que permita escribir letras de todos los idiomas y una lista específica de caracteres en una entrada como esta:
Este campo solo debe contener caracteres alfabéticos, números, espacios y _-()[]{},~.;:'"/?#=$%<>@!
Estoy usando la biblioteca XRegexp - https://github.com/slevithan/xregexp para esto
Aquí está mi expresión regular hasta ahora
export const INPUT_VALIDATOR_REGEXP = new XRegExp( "^[0-9\\p{L} _.&@<>!_\\](){}\\[,\\/\\-.;#=$%:~'\"?+]+$" );El problema es que no coincide con la siguiente lista de idiomas:
ການທົດສອບ - Laotian পরীক্ষা - Bengaleza စမ်းသပ် - Birman מִבְחָן - Hebraica પરીક્ષણ- Gujarati परीक्षण - Hindi פּרובירן - Idis ಪರೀಕ್ಷೆ - Kannada សាកល្បង - Khmer പരീക്ഷ - Malayalam चाचणी - Marathi परीक्षण - Nepalez ପରୀକ୍ଷା- Odia ਟੈਸਟ - Punjabi පරීක්ෂණය - Singhalez சோதனை - Tamila పరీక్ష - TeluguAquí tengo un violín que muestra el comportamiento actual: https://jsfiddle.net/cro86wt0/
Solución:
Terminé escribiendo esta expresión regular basada en la respuesta de @Tom:
"^[0-9\p{L} \u0a00-\u0a7e\u0b00-\u0b7e\က-႞\u0590-\u05fe\u0980-\u09fe\u0e80-\u0efe\u0a80-\u0afe\u0900-\u097F\u0c80-\u0cfeក-\u17fe\u0D02\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D28\u0D2A-\u0D39\u0D3E-\u0D43\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D60\u0D61\u0D66-\u0D6F\u0d80-\u0dfe\u0b80-\u0bfe\u0c00-౾_.&@<>!_\](){}\[,\/\-.;#=$%:~'"?+]+$