gpt4 book ai didi

php - perl 正则表达式模式在 php 中有效但在 javascript 中无效?

转载 作者:行者123 更新时间:2023-11-29 20:15:38 24 4
gpt4 key购买 nike

我有一个允许添加自定义字段的 CMS 应用程序。一种类型的自定义字段是用户文本输入框。创建此字段类型时,您还可以提供一个 perl 正则表达式以在 preg_match php 函数中使用,以验证此字段的用户输入。

现在,我正在设置新的方式来管理数据,其中包含大量前端 jquery 奇思妙想,但我遇到了这个问题。当动态生成表单(ajax/php)时,还会组装一个 JSON 字符串并与动态表单 HTML 一起添加到 ajax 响应数据中。接收 javascript 函数绘制 html 并解析包含字段信息的 JSON 字符串(它是什么类型的字段:文本或选择以及每个字段存在的其他字段选项。然后将此 JSON 对象附加到 jQuery 数据( ) 表单的#submitButton 方法。

当用户提交表单时,循环按钮的 data() 键以访问有关应检查哪个表单 ID 以进行输入验证的信息,即 selectindex 不能为零并且文本字段必须根据提供的正则表达式模式进行验证.

我为 PHP 端提供的正则表达式模式是:/^([A-Za-z0-9 .\-']*)$/ 这一直有效PHP 很棒,我描述的其余部分也很好用。我的问题是我真的不擅长正则表达式,我不明白为什么这个模式通过 php 中的 preg_match 正确匹配,但使用 string.match(pattern); javascript 每次都失败,无论我给它什么输入。

这是一段代码:

var checklist = $('#ficb1').data(); // gets data() object.
var errors = new Array();
for(var key in checklist) { // loop through data() keys

// verify text field
if(checklist[key]["type"] == "text") { // do the following for text fields
if(checklist[key]["options"]) { // checks if a pattern is set
// found pattern! regex check!
var pattern = checklist[key]["options"]; // verfied value: /^([A-Za-z0-9 .\-']*)$/
var valstr = $('#'+key).val(); // key = id of field being checked without # sign valstr varified to hold the value of the input text.
if(!valstr.match(pattern)) {
// add error message to error array - regex match not found.
var engkey = key.replace('_', ' ');
errors.push(ucfirst(engkey.substr(1)) + ' did not match the required pattern ('+pattern+').');
}
}
}

}

无论我输入什么,该函数最终都会将该文本添加到错误数组中,即使我输入不带引号的“hello”时也是如此,这应该与该正则表达式匹配...

抱歉冗长的解释,我在这个正则表达式匹配上做错了什么?

最佳答案

我猜你的正则表达式是这样的字符串:

"/^([A-Za-z0-9 .\-']*)$/"

这不能用作正则表达式。在将其插入 JavaScript 之前,请尝试删除前导斜杠和尾随斜杠。

打开您的 JavaScript 控制台,看看这会发生什么,看看一些斜线可以产生的不同:

var pat = "^([A-Za-z0-9 .\\-']*)$";
console.log('pancakes'.match(pat));
console.log('pancakes'.match(new RegExp(pat)));
console.log('pancakes'.match(/^([A-Za-z0-9 .\-']*)$/));

var pat2 = "/^([A-Za-z0-9 .\\-']*)$/";
console.log('pancakes'.match(pat2));
console.log('pancakes'.match(new RegExp(pat2)));

或转到此处:http://jsfiddle.net/ambiguous/7FPux/

关于php - perl 正则表达式模式在 php 中有效但在 javascript 中无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7055450/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com