回文
"回文"是指正读反读都能读通的句子,
它是古今中外都有的一种修辞方式和文字游戏,如“我为人人,人人为我”等。
Palindrome Number
在数学中也有这样一类数字有这样的特征,成为回文数
比如: 123321 12321
无论从左到右读还是从右向左读,都是相同的
案例
判断一个数字字符串是否是回文数字?
知识点
正则表达式中捕获性分组会把分组()里的内容存储在RegExp中
我们可以利用反向引用分组的内容实现回文效果
案例源码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>案例-回文数字</title>
</head>
<body>
<input type="text" onblur="checkInfo(this.value)" />
<script type="text/javascript">
// TODO 判断一个数字字符串是否是回文数字 123321 12321
function checkInfo( val ){
val = val.trim();
// console.log( val );
// 123321 12321 -> (\d)(\d)(\d)\3\2\1 (\d)(\d)(\d)\2\1
// 正则表达式
let str = ``;
// 前部分 分组次数
let len = Math.ceil( val.length / 2 ) ; // 5 / 2 -> 2.5 -> 3 6 / 2 -> 3
for(let i = 0; i < len; i++){
str += '(\\d)'; // \ 转译符号
}
// 后部分 3 2 1 , 2 1
len = Math.floor( val.length / 2 ) ; // 5 / 2 -> 2.5 -> 2 6 / 2 -> 3
for(let i = len; i > 0; i--){
str += '\\' + i; // \ 转译符号
}
// 整合最终的正则表达式
console.log( str );
let reg = new RegExp( str, 'ig');
// 三元运算符
reg.test( val ) ? alert( val + "是回文数字") : alert( val + "不是回文数字") ;
}
</script>
</body>
</html>