在java正则表达式中匹配'_'和' - '

Pab*_*dez 6 java regex

我在java中有这个正则表达式匹配字母数字字符或波浪号(〜)

^([a-z0-9])+|~$

现在我还要添加角色-,_我尝试了一些组合,但两者都不起作用,例如:

^([a-zA-Z0-9_-])+|~$ ^([a-zA-Z0-9]|-|_)+|~$

必须匹配的示例输入字符串:

woZOQNVddd

00000

ncnW0mL14-

dEowBO_Eu7

7MyG4XqFz-

A8ft-y6hDu~

任何线索/建议?

cle*_*tus 8

-是方括号内的特殊字符.它表示一个范围.如果它不在正则表达式的任何一端,则需要通过\在它之前放置它来进行转义.

值得指出一条捷径:\w等同于[0-9a-zA-Z_]我认为这更具可读性:

^([\w-]+|~$
Run Code Online (Sandbox Code Playgroud)