繁体   English   中英

Javascript 正则表达式 - 根据正则表达式规则替换字符

[英]Javascript Regex - replacing characters based on regex rules

我正在尝试从浏览器输入字段上的用户输入中删除非法字符。

const myInput = '46432e66Sc'
var myPattern = new RegExp(/^[a-z][a-z0-9]*/);
var test = myPattern.test(myInput);
if (test === true) {
 console.log('success',myInput)
} else {
  console.log("fail",myInput.replace(???, ""))
}

我可以使用正确的正则表达式进行测试,它工作得很好。 现在我正在尝试删除非法字符。 规则是,第一个 position 中只有小写字母字符。 所有剩余位置只能有小写字母和数字 0-9。 没有空格或特殊字符。 我不确定在替换行上使用什么模式。

感谢您的任何帮助,您可以提供。

布拉德

你可以试试下面的代码:

const myInput = '46432e66Sc'
var myPattern = new RegExp(/^[a-z][a-z0-9]*/);
var test = myPattern.test(myInput);
if (test === true) {
  console.log('success',myInput)
} else {
  console.log("fail",myInput.replace(/[^a-z0-9]/g, ""))
}

替换使用以下正则表达式: /[^a-z0-9]/g 这匹配所有不是小写或数字的字符。

您可以验证您的正则表达式并从以下页面上的备忘单获得帮助: https://regexr.com/

您可以通过首先去除任何会导致输入失败的前导字符来处理此问题。 然后对剩余的字符进行第二次清理:

 var inputs = ['abc123', '46432e66Sc']; inputs.forEach(i => console.log(i + " => " + i.replace(/^[^az]+/, "").replace(/[^a-z0-9]+/g, "")));

请注意,在我们删除了以小写开头的输入所需的尽可能多的字符之后,删除非小写/非数字的替换不会影响第一个字符,因此我们可以对整个字符串进行全面替换.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM