Reg Ex 不会验证我是否将 # 与其他字符或数字一起使用
Reg Ex doesnt validate if i use # along with other characters or number
这是我之前问过的同一个问题。 抱歉,我检查了所有链接,前提是它没有帮助。 对不起,这是我第一次在这里问问题,所以不太清楚如何问
我在这里再次详细解释:
我有一个输入文本字段。我使用 jquery 来验证用户在此输入框中输入的输入日期。
我在javascript GET方法中将数据输入作为参数传递,并将其传递给PHP,并在那里使用简单的REG Ex进行验证。它确实在所有帐户中进行验证。但是,如果我在任何测试用例中添加#,则此验证将失败。 我的代码: 输入字段:
<div id="clntFstName" >
<label for="clnt_fst_name">First Name</label>
<input type="text" id="clnt_fst_name" name="clnt_fst_name" onBlur="checkFieldValid(this.value, this);" value=""/>
<div class="msgError"></div>
</div>
如果函数 CheckFieldValid 在用户离开字段输入框时调用。
Java脚本:
function checkFieldValid(value, obj) {
var elem = obj.name;
$('#' + elem).parent().children('.msgError').html('');
var $label = $("label[for='" + obj.id + "']").text();
var $id = obj.id;
$.getJSON("ajax/registerClient.php?action=checkInputFieldValid&varField=" + value + "&lab=" + $label + "&id=" + $id, function(json) {
if (json.status.length > 0) {
$.each(json.status, function() {
if (this['fail'] == 'fail') {
var info = '<div class="warningMsg"> ' + this['message'] + '</div>';
$('#' + elem).parent().children('.msgError').html(info);
$('#' + elem).focus();
$('#' + elem).val("");
}
if (this['success'] == 'success') {
$('#' + elem).parent().children('.msgError').html('this is success');
}
});
if (json.status == 'empty') {
$('#' + elem).parent().children('.msgError').html('this is empty');
}
}
});
}
PHP代码:
if($_GET['action'] == 'checkInputFieldValid'){
if(!empty($_GET['varField'])){
// this creates dynamic session variables and add values to it.
$_SESSION[$_GET['id']] = $_GET['varField'];
if(preg_match('/^[a-zA-Z]+$/',$_GET['varField'])){
$txtVar = 'It is a valid '.$_GET['lab'];
array_push($validFieldArray, array('success' => 'success', 'message' => $txtVar));
echo json_encode(array('status' => $validFieldArray));
$errorJScript = 0;
}else{
$txtVar = 'Enter a valid '.$_GET['lab'];
array_push($validFieldArray, array('fail' => 'fail', 'message' => $txtVar));
unset($_SESSION[$_GET['id']]);// unset the session variable to clear when page refresh
echo json_encode(array('status' => $validFieldArray));
$errorJScript = 1;
}
}
}
我不知道我错在哪里?我按照其他成员的指示做了所有事情 可能是我在传递 GET 请求变量时对 Java 脚本做错了什么?至于我想我完全按照其他成员告诉我的关于 PHP 部分的事情做了,但是当我从 Java 脚本部分获取数据时,数据可能是错误的?当我用 PHP 返回的其他值检查它时。但是当我在我的输入框中输入 # 时,它不会进行 AJAX 调用,也不会返回 JSON 或设置会话变量。所以可能当我将变量作为 GET 参数传递时,它不会运行 AJAX,只是不验证,所以请告诉我如何将 # 作为 GET 参数传递,以便我正确验证 PHP 中的字段。请帮忙,我会把我的工作丢掉:(
您的$.getJSON
调用应使用encodeURIComponent()
来确保您没有创建错误的URL:
$.getJSON("ajax/registerClient.php?action=checkInputFieldValid&varField=" +
encodeURIComponent(value) +
"&lab=" +
encodeURIComponent($label) +
"&id=" +
encodeURIComponent($id), function(json) {
如果不这样做,则#
字符将被解释为 URL 哈希字段开始的信号,而 URL 的其余部分将被忽略。
相关文章:
- 包含特殊字符 (!,@,#,&) 不包括其他特殊字符
- JavaScript不显示剩余字符,但适用于其他页面
- JSON编码一个包含#和其他特殊字符的字符串
- Regex-仅当字符串包含任何其他字符时才允许使用某些字符
- Javascript:用其他字符替换反斜杠和双引号
- 正则表达式不允许所有特殊字符,但允许其他语言,如希伯来语 JavaScript
- Reg ex 表示特定字符之后和其他字符之间的任何内容
- 错误:“JSON.parse:JSON 数据第 1 行第 1 列的意外字符”,当包含其他 php 文件时
- JavaScript Regex - 将包含某些字符且不包含其他字符的字符串匹配
- 检测由 shift 键和其他键组合产生的特殊字符
- Reg Ex 不会验证我是否将 # 与其他字符或数字一起使用
- Regex匹配前面或后面没有其他字符的精确单词
- 使用其他javascript删除字符串中某个字符的所有实例
- 其他形式的字符
- 使用jquery变量替换句点、冒号或任何其他字符的通用regexp
- 使用油脂/夯实键(或其他扩展)来省略web元素中的某些字符
- 使用JavaScript删除HTML字母或其他字符
- JSON:处理textArea中的换行符(和其他无效的JSON字符)
- RegEx查找一个字符的所有出现,而不是在两个其他字符之间
- 为什么特殊字符会自动转换为字符串值中的其他字符