stings的Regex过滤器接受UTF-8中的所有字母,但所有非字母字符除外,但-(连字符)除外



我想用正则表达式过滤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));

相关内容

最新更新