按NET的标准,\w本来就是可以匹配:汉字,字母,数字,下划线。的
所以一般\w可以满足需求了。
如果需要排除字母数字的话,可以这样:
(![a-zA-Z0-9_])\w
>_>这样写估计效率不高
所以一般来说还是直接匹配指定的unicode码
\unnnn Unicode代码中十六进制代码为nnnn的字符
汉字(字符) [\u4e00-\u9fa5]
中文及全角标点符号(字符) [\u3000-\u301e\ufe10-\ufe19\ufe30-\ufe44\ufe50-\ufe6b\uff01-\uffee]
若“以内”包含0位数字:/\d{,5}/
若“以内”至少是1位:/\d{1,5}/
——————
只是为判断字符串能否转的话,个人认为直接判断itoa(atoi(s))是否和与去掉了原来的s两头不影响数值的0的结果相同即可。意思就是先转成整数试试,然后再把这整数转回字符串,与原来的串比较,当然也要考虑少数你认可的特殊情况。
js:
var str = "汉字12345";
var reg = /^(\d|[\u4e00-\u9fa5]){5,10}$/;
regtest(str);
php:
<php
$str = "汉字12345";
$reg = /^(\d|[\u4e00-\u9fa5]){5,10}$/;
preg_match($reg,$str,$matches,PREG_OFFSET_CAPTURE);
print_f($matches);
>
我写了代码如下, 测试可行, 供参考:
//主要靠这个函数实现: 将body下的文本节点中的searchWord, 替换为replaceWordfunction replaceBodyText(searchWord, replaceWord){
var reg = new RegExp(searchWord, 'g');
function replaceNode(node){
nodechildNodesforEach(function(v){
if(vnodeName === 'SCRIPT')
return; //排除<script>标签
if(!vhasChildNodes()){
if(regtest(vtextContent))
vtextContent = vtextContentreplace(reg, replaceWord);
return;
}
replaceNode(v);
});
}
replaceNode(documentbody);
}
//绑定一个事件测试用, 点击这个按钮后才会执行;
documentquerySelector('#testBtn')addEventListener('click', function(){
replaceBodyText('中国', '美国');
});
//实际使用中直接调用函数即可:
//以下语句表示将所有文本节点中的"中国"替换为"美国:
//replaceBodyText('中国', '美国');
以上就是关于正则表达式如何匹配汉字全部的内容,包括:正则表达式如何匹配汉字、请问易语言中,怎样用正则表达式匹配一个汉字啊、怎么把正则表达式获取的数字转换成汉字到超级列表框等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)