我想用正则表达式过滤javascript中的字符串,即一个规则或一组规则,它接受UTF-8中的所有字母,除了-(连字符(之外的所有非字母字符
例如,可以通过过滤器:
abcd
ab-cd
müller
1248
ab99
straße
café
façade
São-Paulo
România
etc..
但不是像ex.那样的非字母字符:
!"§$%&/()=?`>°^_<|#'@, etc
我尝试了几种使用regex的方法,但没有成功。你能帮我吗
您可以将字母和数字[p{L}p{N}]+
与unicode标志进行匹配,如果连字符不应该在开头或结尾,则可以选择重复该部分:
^[p{L}p{N}]+(?:-[p{L}p{N}]+)*$
Regex演示
const regex = /^[p{L}p{N}]+(?:-[p{L}p{N}]+)*$/gmu;
const str = `abcd
ab-cd
müller
1248
ab99
straße
café
façade
São-Paulo
România
etc..
!
"
§
$
%
&
/
(
)
=
?
`
>
°
^
_
<
|
#
'
@
,
`;
console.log(str.match(regex));