遇到一个问题,边输入,边按334格式动显示短横杠,例如户输1234567890,展示123-456-7890.
求教大神如果用正则该怎么做匹配。我尝试了大半天,总是匹配不到正确的位置。
遇到一个问题,边输入,边按334格式动显示短横杠,例如户输1234567890,展示123-456-7890.
求教大神如果用正则该怎么做匹配。我尝试了大半天,总是匹配不到正确的位置。
$str = '1234567890';
$pattern = "/(\d{3})(\d{3})(\d{4})/";
echo preg_replace($pattern,"\${1}-\${2}-\${3}",$str);
123-456-7890
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>phone</title>
</head>
<body>
<div style="position: relative;">
<input type="text" id="display" style="position: absolute;">
<!-- 隐藏input用于输入 -->
<input type="text" id="input" style="position: absolute; opacity: 0;">
</div>
<script>
var input = document.getElementById('input');
var display = document.getElementById('display');
input.oninput = function () {
// 只保留十位数字
this.value = this.value.replace(/^.*?(\d{1,10}).*?$/, '$1');
// 提取号码段
var nums = this.value.match(/^(\d{0,3})(\d{1,3})?(\d{1,4})?$/);
// 格式化显示
display.value = nums[1] + (nums[2] ? '-' + nums[2] : '') + (nums[3] ? '-' + nums[3] : '');
}
</script>
</body>
</html>
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
4 回答2.4k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
下面的代码可以在 chrome 浏览器的开发者工具的控制台中运行,仅供参考。