Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当字符串以空格结尾时,为什么我的regexp不起作用?_Javascript_Regex_Whitespace - Fatal编程技术网

Javascript 当字符串以空格结尾时,为什么我的regexp不起作用?

Javascript 当字符串以空格结尾时,为什么我的regexp不起作用?,javascript,regex,whitespace,Javascript,Regex,Whitespace,我正在使用这个regexp-[^\s\da-zA-Zåäääääää]+$来过滤除A-Z、0-9和瑞典字符之外的任何内容。只要字符串不以空格结尾,它就可以正常工作。我有点困惑,我需要更正什么才能使它接受字符串,即使它们以空格结尾。有\s,但显然不够 我的regexp有什么问题 "something #¤%&/()=?".replace(/[^\s\da-zA-ZåäöÅÄÖ]+$/, '') # => a string "something ending with whites

我正在使用这个regexp-
[^\s\da-zA-Zåäääääää]+$
来过滤除A-Z、0-9和瑞典字符之外的任何内容。只要字符串不以空格结尾,它就可以正常工作。我有点困惑,我需要更正什么才能使它接受字符串,即使它们以空格结尾。有
\s
,但显然不够

我的regexp有什么问题

"something #¤%&/()=?".replace(/[^\s\da-zA-ZåäöÅÄÖ]+$/, '') # => a string


"something ending with whitespace #¤%&/()=? ".replace(/[^\s\da-zA-ZåäöÅÄÖ]+$/, '')# => a string ending with space #¤%&/()=? 
您使用的是否定字符类(“任何不是空格、数字、字母等的内容”),因此您的正则表达式无法匹配

从中删除
\s
,以及
$
(将匹配项绑定到字符串的末尾),它应该可以工作

如果确实希望在字符串中保留空格,并且只在末尾删除空格,请使用

"something with whitespace #¤%&/()=? ".replace(/[^\s\da-zA-ZåäöÅÄÖ]+|\s+$/g, '')
结果:

something with whitespace
您使用的是否定字符类(“任何不是空格、数字、字母等的内容”),因此您的正则表达式无法匹配

从中删除
\s
,以及
$
(将匹配项绑定到字符串的末尾),它应该可以工作

如果确实希望在字符串中保留空格,并且只在末尾删除空格,请使用

"something with whitespace #¤%&/()=? ".replace(/[^\s\da-zA-ZåäöÅÄÖ]+|\s+$/g, '')
结果:

something with whitespace
您的正则表达式说:“匹配不在以下范围内的字符的一个或多个实例,后跟字符串末尾”。这本质上意味着您的正则表达式将只匹配出现在字符串末尾的不允许字符序列。由于您的测试字符串以空白结尾,这是您的逻辑所允许的,因此不存在“字符串结尾出现的不允许字符序列”,因此正则表达式不匹配任何内容

如果从正则表达式的末尾删除
$
,而是使用
g
标志使其全局替换不在指定字符范围内的任何内容,则可以实现所需的筛选

如果您还想修剪尾随空格,最好使用另一个正则表达式,或者更简单的
trimRight
调用来修剪尾随空格。

您的正则表达式说:“匹配不在以下范围内的字符的一个或多个实例,后跟字符串结尾”。这本质上意味着您的正则表达式将只匹配出现在字符串末尾的不允许字符序列。由于您的测试字符串以空白结尾,这是您的逻辑所允许的,因此不存在“字符串结尾出现的不允许字符序列”,因此正则表达式不匹配任何内容

如果从正则表达式的末尾删除
$
,而是使用
g
标志使其全局替换不在指定字符范围内的任何内容,则可以实现所需的筛选


如果您还想修剪尾随空格,最好使用另一个正则表达式,或者更简单的
trimRight
调用。

我不小心删除了我的注释。非常感谢。我不小心删除了我的评论。非常感谢。