[\uD800-\uDBFF][\uDC00-\uDFFF]
var rsurrogate = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g var rnoalphanumeric = /([^\#-~| |!])/g var escape = function(str) { //将字符串经过 str 转义得到适合在页面中显示的内容, 例如替换 < 为 < return String(str). replace(/&/g, '&'). replace(rsurrogate, function(value) { console.log('============') console.log(value) var hi = value.charCodeAt(0) var low = value.charCodeAt(1) return '&#' + (((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000) + ';' }). replace(rnoalphanumeric, function(value) { console.log('------------') console.log(value) return '&#' + value.charCodeAt(0) + ';' }). replace(/</g, '<'). replace(/>/g, '>') } str = 'abcdefg123456789[aa]0中过<div>©| !---</div>' console.log(str) console.log(escape(str)) // abcdefg123456789[aa]0中过<div>&copy;| !---</div> var r = /([^\#-~| |!])/g // 排除\#-~ 或 空格 或 ! 得到匹配中文 var r1 = /([^\#-~])/g // # -(to) ~ console.log(r.test('12 ji')) //var rr = /[\u4e00-\u9fa5]/g //console.log(rr.test('12聚宽'))