以下正则想监测输入的字符串是否包含俄文,但可以输入英文及其标点空格等。但不知道错在哪里,望高手指点!感谢!

阿弥陀佛 2018-11-03 08:58:33


<script type="text/javascript">
function kk(str){

//var a=new RegExp("^[\u4E00-\u9FA5A-Za-z0-9 \\pP]+$");
var a=new RegExp("^[\u4E00-\u9FA5A-Za-z0-9 \/\(\)',]+$");
//var a=new RegExp("^w+$");
if(a.test(str)){
labeltishi.innerHTML="";
}else{
labeltishi.innerHTML=" "+"Please input English!";
}
}
</script>





<textarea id="content" type="texe" onchange="kk(this.value)" /></textarea><label style="color:red; font-size:20px; font-weight:800;background: #FFFFCC;" id="labeltishi"></label>

...全文
177 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿弥陀佛 2018-11-08
  • 打赏
  • 举报
回复
引用 3 楼 jslang 的回复:
匹配所有的英文数字标点符号是[!-~] ,也就是[\x21-\x7e]

在浏览器中的js不支持[\x{0400}-\x{04ff}]这种语法,要改成[\u0400-\u04ff]。而且ie等浏览器还不支持正则表达式后面的u修饰符。



感谢专业的答复,谢谢!
天际的海浪 2018-11-04
  • 打赏
  • 举报
回复
匹配所有的英文数字标点符号是[!-~] ,也就是[\x21-\x7e] 在浏览器中的js不支持[\x{0400}-\x{04ff}]这种语法,要改成[\u0400-\u04ff]。而且ie等浏览器还不支持正则表达式后面的u修饰符。
阿弥陀佛 2018-11-04
  • 打赏
  • 举报
回复
追问:
1、如何允许所有的英文标点符号可以输入?
2、相反的思路,如果直接过滤俄文字符呢?网上说使用/([\x{0400}-\x{04FF}]|[\x{0500}-\x{052F}]|[\x{2DE0}-\x{2DFF}]|[\x{A640}-\x{A69F}]|[\x{1C80}-\x{1C8F}])/u 试了下,也没生效,继续求教,感谢!
天际的海浪 2018-11-03
  • 打赏
  • 举报
回复
用字符串来创建正则表达式需要两次转义,所以转义符“\”要写两次
var a =new RegExp("^[\\u4E00-\\u9FA5A-Za-z0-9 \\\/\\(\\)',]+$");
或者用正则表达式字面量
var a = /^[\u4E00-\u9FA5A-Za-z0-9 \/\(\)',]+$/;

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧