我想验证一些用户输入英语短语与正则表达式(允许一些变化)。一个例子是“你能去哪里?”反对/^(W|w){1}here\s{1,2}can\s{1,2}you\s{1,2}go\s{0,1}\??$/
我正在使用一个jquery ui对话框,其中包含一个标识为"form#t2e_form"
的表单和一个标识为"form#t2e_w"
的输入。这是代码:
jQuery("span.t2e_icon").on("click", function(evnt) {
t2e_dlog.dialog("open");
evnt.stopPropagation();
// remove the dialog box title bar
jQuery("#ui-dialog-title-dialog").hide();
jQuery(".ui-dialog-titlebar").removeClass('ui-widget-header');
var elementId = evnt.target.id,
englishTextId = ("span#t1ee" + elementId.substring(7)),
regexId = ("regex" + elementId.substring(7)),
regexText =( /^(W|w){1}here\s{1,2}can\s{1,2}you\s{1,2}go\s{0,1}\??$/);
var form_config ='<div id="t2e_modal"><p>Please enter the English text here</p><form id="t2e_form" action="#"><input type="text" id="t2e_w" name="t2e_w" size=50><input id="t2e_submit" type="submit" value="Submit"></form><span id="output"></span></div>';
jQuery("div#t2e_dialog").append(form_config);
jQuery( "form#t2e_form" ).submit(function(event) {
if (regexText.test(jQuery( "input#t2e_w" ).val())) {
jQuery( "span#output" ).text( "Validated..." ).show().fadeOut( 1000 );
} else {
jQuery( "span#output" ).text( "Not valid!" ).show().fadeOut( 1000 );
}
event.preventDefault();
});
这样可行但是如果替换了regexText的以下值以便可以选择其他正则表达式(如下面的html中那样)则代码将失败
regexText = document.getElementById(regexId).innerHTML;
相关的html是:
<p id="regex01">/^(W|w){1}here\s{1,2}can\s{1,2}you\s{1,2}go\s{0,1}\??$/ </p>
<p id="regex02">/^(W|w){1}here\s{1,2}can\s{1,2}you\s{1,2}work\s{0,1}\??$/ </p>
...
如果有人能提供帮助那就太棒了,谢谢