※ 引述《cashlalala (快来跟我做朋友)》之铭言:
: 各位大大好,
: 我想要用regex来匹配 java instance 的 name
: 像是
: java.temp.test@12434
: org.apache.a@3235
: abc@3546
: 然后我自己测试了一下 ^\w[.[\w]+]*@[\d]+$
^ ^
中括号包住中括号的话,里面的那两个左右中括号似乎会被当作纯粹的字符看待
另外因为[]符号包住的字语意是“从[]内取出任何一个字”
所以并不能保证 . 符号一定在 \w 字符之前
也因此 ........@ 的情况也会被当成合法
: 正常的case都会匹配, 但是某些错误的case也会被匹配到
: 像是
: abc.test........@46564
: 请问我该怎么改呢?
: 请各位大大指教 感谢!
我自己是改成这样啦
^\w+(\.\w+)*@\d+$
前后都一样,只有把原本中括号的部分抽掉
*****
修改:\d不用中括号包住意思也一样
*****
因为我觉得中间那部分你应该是用不到中括号
我认为你要的其实不是 “ . 或 \w ”
而是 “ . 后面接着 \w ”的情况
然后用括号包住后面加上*表示这种组合允许完全没有 (abc@3546)
但是如果要有就一定要是上面的规则 (org.apache.a@3235 或 org.apache@3235)
应该就是这样吧...其实我也不是很熟,自己刚刚试这样应该是吻合的