Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angular/Regex中输入框中的空格问题?我需要限制第一个空格,然后允许用户在第一个字符后输入空格_Javascript_Php_Html_Regex_Angular - Fatal编程技术网

Javascript Angular/Regex中输入框中的空格问题?我需要限制第一个空格,然后允许用户在第一个字符后输入空格

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(

我不想允许用户在第一个字符中输入空格,也不想将用户限制为3个特殊字符

他应该能够在第一个单词后按空格键。 我使用了带有指令的正则表达式,我能够实现其中的大部分。 问题是用户无法在输入框中的任何位置输入空格

我们将非常感谢您对正则表达式的帮助。 我还附加了一个plunker链接。

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;
}