Javascript 字符串开头和结尾没有空格
在我的角度应用程序(Typescript)中,我希望根据用户插入的值的开头和结尾处的空格检查Javascript 字符串开头和结尾没有空格,javascript,regex,typescript,regex-negation,Javascript,Regex,Typescript,Regex Negation,在我的角度应用程序(Typescript)中,我希望根据用户插入的值的开头和结尾处的空格检查输入 下面的正则表达式是我找到的最常见的答案。但是这个正则表达式的test函数没有返回正确的布尔值 如果字符串的开头、结尾或两者都包含空格,则返回false的正确RegExp是什么 函数myFunction(){ var myStr=document.getElementById(“reader”).value; var regex1=/[^\s].+[^\s]/; var regex2=新的RegEx
输入
下面的正则表达式是我找到的最常见的答案。但是这个正则表达式的test
函数没有返回正确的布尔值
如果字符串的开头、结尾或两者都包含空格,则返回false的正确RegExp是什么
函数myFunction(){
var myStr=document.getElementById(“reader”).value;
var regex1=/[^\s].+[^\s]/;
var regex2=新的RegExp('[^\s].+[^\s]','i');
var result1=regex1.test(myStr);
var result2=regex2.test(myStr);
document.getElementById(“writer1”).value=result1;
document.getElementById(“writer2”).value=result2;
}
正则表达式:
使用构造函数:
使用第一个模式^[^\s].+[^\s]$
字符串必须至少有3个字符,因为被求反的字符类需要匹配,+
将匹配除换行符以外的任何字符的1倍以上
第二个模式[^\s].+[^\s]
未锚定,也将允许部分匹配
如果还希望匹配a
或aa
,则可以使用否定查找来断言字符串不以空格或制表符结尾,并以非空白字符开始匹配
^(?!.*[ \t]$)\S.*$
^
字符串的开头
(?!.[\t]$)
负向前看,断言右边的内容不是字符串末尾的空格或制表符
\S
匹配非空白字符
*
匹配除换行符以外的任何字符0+次
$
字符串结尾
第一个正则表达式是正确的。
^[^\s].+[^\s]$-为什么不使用它,而是使用一些不等价的东西呢?您的正则表达式可能应该与字符串的开头和结尾相匹配。@VLAZ如何在javascript中使用^
和$
?为什么它不是等价的呢?@Amir Mousavi您实际上只是使用了^[^\s].+[^\s]$
。和[^\s].+[^\s]
不是等效的,因为它没有线的起始/结束锚。@epascarello运行良好的代码段,显示了其他内容