【问题标题】:Javascript Regex - replacing characters based on regex rulesJavascript Regex - 根据正则表达式规则替换字符
【发布时间】:2022-01-11 03:35:20
【问题描述】:

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

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(???, ""))
}

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

感谢您提供的任何帮助。

布拉德

【问题讨论】:

    标签: javascript regex replace


    【解决方案1】:

    你可以试试下面的代码:

    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/

    【讨论】:

    • 好吧,这不是我想要的。只有第一个字符不能是数字。其余字符只能是小写字母和数字。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-11-03
      • 1970-01-01
      • 2013-01-21
      • 1970-01-01
      • 2011-02-03
      • 2010-11-12
      • 2016-09-23
      • 1970-01-01
      • 2015-11-30
      相关资源
      最近更新 更多