我想匹配行尾的尾随空格,但如果该行完全由空格组成,则不行。
然后应该替换这些空格。
以下表达式使用负前瞻来匹配这些空白行,但似乎不起作用。
/(?!^( | )+$)( | )+$/gm
以下是输入示例
#The following line's trailing spaces should match
Foo
#But not a line full of whitespace
这是一个片段
var oRegExp = /(?!^( | )+$)( | )+$/;
// Test cases
var test = function (sInput, sOutput) {
var oMatch = sInput.match(oRegExp);
var bSuccess = (oMatch === null && sOutput === null) || oMatch[0] === sOutput;
console.log('"' + sInput + '" ', bSuccess ? 'success' : 'failed');
};
test('Foo ', ' ');
test(' ', null);
test('', null);

答案 0 :(得分:2)
使用正则表达式/\S\s+$/
,它匹配任何非空白字符,后跟最后的空白字符。或者更具体的正则表达式/[^ ][ ]+$/
,其中不包括换行符,制表符空格等
更多建议:
RegExp
在这里是完全没必要的。RegExp#test
方法在字符串匹配时获取布尔值。
var oRegExp = /\S\s+$/;
// or more specific
// oRegExp = /[^ ][ ]+$/;
var sValidInput = 'Foo ';
var sInvalidInput = ' ';
console.log('"' + sValidInput + '" should match: ', oRegExp.test(sValidInput));
console.log('"' + sInvalidInput + '" should not match: ', oRegExp.test(sInvalidInput));
更新:使用使用/^(?!(?: | )+$).*?( | )+$/
匹配任何其他组合的正则表达式negative look-ahead assertion。
var oRegExp = /^(?!(?: | )+$).*?( | )+$/;
var sValidInput = 'Foo ';
var sInvalidInput = ' ';
console.log('"' + sValidInput + '" should match: ', oRegExp.test(sValidInput));
console.log('"' + sInvalidInput + '" should not match: ', oRegExp.test(sInvalidInput));