React环境下匹配僧伽罗语与英文的15-40字符正则表达式需求
解决方案:匹配僧伽罗语+英文字母的正则表达式
正确的正则表达式
你之前的正则缺少英文字母匹配规则,且未启用Unicode模式,导致无法正常工作。修正后的正则如下:
/^[\p{Sinhala}a-zA-Z\s]{15,40}$/u
规则解释
\p{Sinhala}:匹配任意僧伽罗语Unicode字符a-zA-Z:覆盖大小写英文字母的匹配需求\s:匹配所有空白字符(包括空格、制表符等;如果仅需匹配普通空格,可替换为\p{Zs}){15,40}:限制文本总长度在15到40字符之间u标志:必须启用Unicode模式,否则\p{Sinhala}这类Unicode属性类无法生效
React中使用示例
可以封装成一个验证函数,用于表单输入校验:
const validateInput = (inputValue) => { const regex = /^[\p{Sinhala}a-zA-Z\s]{15,40}$/u; return regex.test(inputValue); }; // 测试示例(注意:你提供的示例文本长度不足15,需使用符合长度的文本测试) const validSample = "දුරකථන එකක් for sale now today"; console.log(validateInput(validSample)); // 返回true
额外注意事项
- 你提供的示例文本“දුරකථන for sale”实际长度不足15,因此测试时会返回false,需确保待验证文本长度符合要求
- 如果需要允许文本前后存在空格,可调整正则为
/^\s*[\p{Sinhala}a-zA-Z\s]{13,38}\s*$/u(缩减中间内容的长度限制,预留前后空格的长度),或者先对输入值执行trim()再验证
内容的提问来源于stack exchange,提问作者asela daskon
相关产品推荐
相关产品推荐

