正则表达式匹配最后一个空格字符

时间:2010-03-17 16:29:20

标签: javascript regex asp-classic

我需要一些帮助。我正在寻找一个匹配字符串中最后一个空格字符的正则表达式。我使用的是JavaScript和经典的ASP。

我有一长串文字,我修剪为100个字符。我想删除最后一个字符以避免拼写错误,如果剪裁由于100个字符限制而剪切一个单词。

regex.replace(/[ ]$.*?/ig, '');

有想法的人吗?感谢。

5 个答案:

答案 0 :(得分:26)

根据我的理解,你需要删除最后一个空格及其后的所有内容,对吧?

 str = str.replace(/\s+\S*$/, "")

答案 1 :(得分:9)

尝试lookahead assertion

/ (?=[^ ]*$)/

对于任意空格字符:

/\s(?=\S*$)/

答案 2 :(得分:3)

那将是

/ +$/

空格字符(),至少一次(+),位于该行的末尾($

请注意,将空格放在字符类中是不必要的,除非您希望匹配多个空格字符,例如标签[\t ]

要真正匹配单个最后一个空格,请使用/ $/


编辑:要切断最后一个空格后的所有内容(考虑一下,这就是实际上似乎想要的东西,你可以使用:

regex.replace(/ +\S*$/ig, '');

正则表达式的意思是:“行的末尾(\S*)至少有一个空格,以及后面的任何非空白字符($)。”

这只能匹配最后一个空格后一行的最后一位。作为副作用,字符串在末尾被修剪。

答案 3 :(得分:2)

正则表达式/^.+ [^ ]*$/将仅匹配一行的最后一个空格。

答案 4 :(得分:0)

使用“经典”RE,你想要的是" [^ ]*$" - 即一个空格字符,后跟任意数量的非空格字符,后跟行尾。 “非空格字符”可能会或可能不适合您对“单词”的定义 - 例如,它也会阻止您在中间剪切数字。如果您想将“字”限制为包含字母,则可以使用:" [^A-Za-z]*$"代替。

另请注意,无论哪种方式,如果一个单词恰好以第100个字符结尾,这将匹配它之前的空格,因此您将删除最后一个单词。如果你想阻止这种情况,你(可能)想要查看你剪掉的第一个字符,如果它是空格,不要从缓冲区中删除任何内容。