我需要一些帮助。我正在寻找一个匹配字符串中最后一个空格字符的正则表达式。我使用的是JavaScript和经典的ASP。
我有一长串文字,我修剪为100个字符。我想删除最后一个字符以避免拼写错误,如果剪裁由于100个字符限制而剪切一个单词。
regex.replace(/[ ]$.*?/ig, '');
有想法的人吗?感谢。
答案 0 :(得分:26)
根据我的理解,你需要删除最后一个空格及其后的所有内容,对吧?
str = str.replace(/\s+\S*$/, "")
答案 1 :(得分:9)
答案 2 :(得分:3)
那将是
/ +$/
空格字符(),至少一次(
+
),位于该行的末尾($
)
请注意,将空格放在字符类中是不必要的,除非您希望匹配多个空格字符,例如标签[\t ]
。
要真正匹配单个最后一个空格,请使用/ $/
编辑:要切断最后一个空格后的所有内容(考虑一下,这就是实际上似乎想要的东西,你可以使用:
regex.replace(/ +\S*$/ig, '');
正则表达式的意思是:“行的末尾(\S*
)至少有一个空格,以及后面的任何非空白字符($
)。”
这只能匹配最后一个空格后一行的最后一位。作为副作用,字符串在末尾被修剪。
答案 3 :(得分:2)
正则表达式/^.+ [^ ]*$/
将仅匹配一行的最后一个空格。
答案 4 :(得分:0)
使用“经典”RE,你想要的是" [^ ]*$"
- 即一个空格字符,后跟任意数量的非空格字符,后跟行尾。 “非空格字符”可能会或可能不适合您对“单词”的定义 - 例如,它也会阻止您在中间剪切数字。如果您想将“字”限制为包含字母,则可以使用:" [^A-Za-z]*$"
代替。
另请注意,无论哪种方式,如果一个单词恰好以第100个字符结尾,这将匹配它之前的空格,因此您将删除最后一个单词。如果你想阻止这种情况,你(可能)想要查看你剪掉的第一个字符,如果它是空格,不要从缓冲区中删除任何内容。