从字母数字正则表达式中排除下划线

rai*_*rop 14 regex

我想使用\w正则表达式来允许字母数字,但我不希望下划线_成为它的一部分.由于_包括在内\w.所以我这样编码但不起作用,我的错误是什么?

(/^roger\w{2,3}[0-9a-z]/i)
Run Code Online (Sandbox Code Playgroud)

我期待除AZ或1-2之外的任何字符都被排除

前 - roger3_2 or roger46_ or roger2_

roger54或roger4a或roger455或rogerAAA

没关系

Bog*_*san 30

你可以尝试类似的东西:

[^_\W]+
Run Code Online (Sandbox Code Playgroud)


tch*_*ist 8

  • 数字代码点是\pN\p{Number}.
  • 一个数字码点是\d,\p{digit},\p{Nd},\p{Decimal_Number},或\p{Numeric_Type=Decimal}.
  • 字母代码点是\p{alpha}\p{Alphabetic}.它包括所有\p{Digit},\p{Letter}\p{Letter_Number}代码点,以及某些\p{Mark}\p{Symbol}代码点.
  • 编程字代码点是\w,或[\p{Alphabetic}\p{Digit}\p{Mark}\p{Connector_Punctuation}].

因此,最严格的定义的字母数字代码点[\p{Alphabetic}\p{Number}]通常是缩写的[\p{alpha}\pN].