0
点赞
收藏
分享

微信扫一扫

正则表达式实现回文数字的判断

佃成成成成 2022-05-01 阅读 60

回文

"回文"是指正读反读都能读通的句子,

它是古今中外都有的一种修辞方式和文字游戏,如“我为人人,人人为我”等。

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>

举报

相关推荐

0 条评论