簡體   English   中英

僅字母和數字但開頭或結尾沒有數字的正則表達式

[英]Regex for only letters and numbers but no numbers at the beginning or end

我想制作一個只匹配字母和數字的正則表達式,但不匹配開頭或結尾的數字:

  • ahmed0saber有效
  • 0ahmedsaber無效
  • ahmedsaber0無效
  • ahmed_saber無效

我試過這個

[a-z0-9_]

但它沒有按預期工作!

這應該有效^[az][az\d]*[az]$

 const regex = /^[az][az\d]*[az]$/ const tests = ['ahmed0saber', '0ahmedsaber', 'ahmedsaber0', 'ahmed_saber'] tests.forEach(test) function test(name) { console.log(name, name.match(regex)? 'yes': 'no') }

如果您還想允許單個字符:

 ^[a-z](?![a-z\d]*\d$)[a-z\d]*$

解釋

  • ^字符串開始
  • [az]匹配單個字符 az
  • (?![az\d]*\d$)否定先行,斷言字符串不以數字結尾
  • [az\d]*匹配可選字符 az 或數字
  • $字符串結束

請參閱正則表達式演示

或者,如果支持后向斷言:

^[a-z][a-z\d]*$(?<!\d)

解釋

  • ^字符串開始
  • [az]匹配單個字符 az
  • [az\d]*匹配可選字符 az 或數字
  • $字符串結束
  • (?<!\d)負向后視,最后斷言不是數字

請參閱另一個正則表達式演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM