簡體   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