Javascript Angular/Regex中输入框中的空格问题?我需要限制第一个空格,然后允许用户在第一个字符后输入空格
我不想允许用户在第一个字符中输入空格,也不想将用户限制为3个特殊字符 他应该能够在第一个单词后按空格键。 我使用了带有指令的正则表达式,我能够实现其中的大部分。 问题是用户无法在输入框中的任何位置输入空格 我们将非常感谢您对正则表达式的帮助。 我还附加了一个plunker链接。Javascript Angular/Regex中输入框中的空格问题?我需要限制第一个空格,然后允许用户在第一个字符后输入空格,javascript,php,html,regex,angular,Javascript,Php,Html,Regex,Angular,我不想允许用户在第一个字符中输入空格,也不想将用户限制为3个特殊字符 他应该能够在第一个单词后按空格键。 我使用了带有指令的正则表达式,我能够实现其中的大部分。 问题是用户无法在输入框中的任何位置输入空格 我们将非常感谢您对正则表达式的帮助。 我还附加了一个plunker链接。 var-app=angular.module('plunker',[]); 应用程序控制器('MainCtrl',函数($scope){ $scope.name='World'; }); app.directive(
var-app=angular.module('plunker',[]);
应用程序控制器('MainCtrl',函数($scope){
$scope.name='World';
});
app.directive(“regExInput”,function()){
“严格使用”;
返回{
限制:“A”,
要求:“?正则表达式”,
作用域:{},
替换:false,
链接:函数(范围、元素、属性、ctrl){
元素绑定('keypress',函数(事件){
var regex=新的RegExp(attrs.regex);
var key=String.fromCharCode(!event.charCode?event.which:event.charCode);
如果(!正则表达式测试(键)){
event.preventDefault();
返回false;
}
});
}
};
});代码>
安古拉斯普朗克
文件。写(“”);
疯狂的{{name}}
下面是正则表达式的意思,一块一块
^ Beginning of string
[^ Any character that's not one of the following:
- Literal '-' character
\s Whitespace
& Literal '&' character
< Literal '<' character
/ Literal '/' character
]
[ One of the following characters:
w Literal 'w'
s Literal 's'
- Literal '-'
]
* ...repeated 0 or more times
$ End of string
^字符串的开头
[^任何不是下列字符之一的字符:
-文字'-'字符
\s空格
&文字'&'字符
如果要测试整个字符串的有效性,在keypress
事件中这样做是行不通的。keypress事件只告诉您按下了什么键,而不是如果接受按键,结果字符串将是什么。通常,在值更改后,您需要根据regexp验证整个字符串,如在<代码>输入<代码>事件。这意味着你不能取消按键,但是这将是一个不寻常的UX。无论如何,退格键和箭头键都是按键,并且在正则表达式的上下文中对它们进行评估并没有什么意义。你可能想考虑验证UX,而不是按键按下。“第一个字符不是破折号、空格、&
、字字符-用户将不允许输入&、^[^-\s&感谢您的宝贵输入。”。
if (!regex.test(key)) {
event.preventDefault();
return false;
}