Javascript 使用Regex确保在'&';?
我试图找到一种最好的方法来检测用户是否在文本字段中输入了“&”,并确保后面有空格 例如,如果用户输入:Javascript 使用Regex确保在'&';?,javascript,jquery,regex,Javascript,Jquery,Regex,我试图找到一种最好的方法来检测用户是否在文本字段中输入了“&”,并确保后面有空格 例如,如果用户输入: Apples & Oranges 一切顺利。但是,如果他们进入: Apples &Oranges 他们收到警报。或者如果他们有: Apples&Oranges 同样的事情 确保用户输入“&”后有空格的最佳方法是什么 以下是我目前掌握的代码: function entityKiller() { var good = true; $('input[typ
Apples & Oranges
一切顺利。但是,如果他们进入:
Apples &Oranges
他们收到警报。或者如果他们有:
Apples&Oranges
同样的事情
确保用户输入“&”后有空格的最佳方法是什么
以下是我目前掌握的代码:
function entityKiller() {
var good = true;
$('input[type=text]:visible').each( function() {
if(/----Regex Here-----/.test($(this).val())) {
good = false;
return;
}
});
return good;
}
有人能给我指出正确的方向吗?你可以试着找到后面跟一个非空格字符的
&
。如果是,则反转测试的输出
:
if(!(/&\S/.test($(this).val()))) {
...
}
如果您的模式以&
结尾,该怎么办?在这种情况下,和
后面没有空格。但是,我上面的例子会认为它是有效的。如果不应该,那么您需要找到一个不后跟空格的&
(而不是后跟非空格的):
丑陋,丑陋,多重否定
编辑:
正如Anton指出的,这假设您希望在&
之后允许任何类型的空格。如果您真的只需要空格字符,则模式将变为:
/&[^ ]/
及
编辑2:
顺便说一下,如果您真的想避免使用负逻辑,您必须检查字符串中的每个&
后面是否都有空格。这就是这种模式:
/^[^&]*(?:&[ ][^&]*)$/
在锚定
^
和$
的位置,确保整个字符串与模式匹配。尝试此正则表达式,后面不跟空格
/&[^\s]/
如果没有
&
或有&
且后跟[space]返回“success”
我认为最好的方法是检查是否有无空格的符号,并在提交数据时自动添加它们。在我看来,给用户这样的警告有点麻烦 无论采用哪种方式,都可以使用此正则表达式来匹配后跟或后跟非空格字符的“与”的实例:
/(&[^ ]+)|([^ ]+&)/
您可以处理代码,从这里添加空间
注意:我没有使用\s,因为它在空格、制表符和换行符上也匹配,而且在你的问题中,你只要求空格。这个怎么样:
[a-zA-Z]*\\s&\\s[A-Za-z]*
| | |
anytext | |
| anytext
Space
/&[^\w]/
它将允许&后跟任何空格字符。如果需要,请用空格替换\w。在此处测试:您可以尝试使用此:
$('input[type="text"]').keydown(function() {
var regex = /[^a-z*]+&+[ ]+[a-z*]/;
if (regex.test($('input[type="text"]').val())) {
$('span').text('good match');
} else {
$('span').text('not matched');
}
});
你认为应该是怎样的?@streetlight:下面的答案建议使用
\s
,它是任何空格,与空格字符不同。小心。如果用户在符号后面插入制表符或换行符,他们的正则表达式也会起作用——我不确定这对您来说是否是个问题。在任何情况下,如果您只想检查符号后面的空格,最好的方法是&
不要使用\s,除非您也想匹配空格、制表符和换行符(这就是它的作用)。@Anton yeah当然。。。抱歉,将问题解释为对空格感兴趣
[a-zA-Z]*\\s&\\s[A-Za-z]*
| | |
anytext | |
| anytext
Space
/&[^\w]/
$('input[type="text"]').keydown(function() {
var regex = /[^a-z*]+&+[ ]+[a-z*]/;
if (regex.test($('input[type="text"]').val())) {
$('span').text('good match');
} else {
$('span').text('not matched');
}
});