我有这个正则表达式:
/^[\a-zøåæäöüß][\a-z0-9øåæäöüß]*(?:\-?[\a-z0-9øåæäöüß,]+)*$/i
它适用于像"K61-283øÅ,æk-ken,a-sd"
这样的疯狂输入,但在案例"word,"
上失败了(所以,当只有一个逗号时)。
另外 - 如何限制它应该以每个逗号或短划线后的字母开头(基本上 - 每个单词)?
规则是:以字母开头,以字母数字结尾;允许使用字母数字,短划线和逗号;在每个破折号或逗号之后应该有一个字母
答案 0 :(得分:1)
更新2:
有两种方法可以查看您的要求。
自上而下的视图
我们将输入视为一个或多个单词的列表,以逗号或短划线分隔:
INPUT = WORD (?: [,\-] WORD )*
每个单词由一个字母组成,后跟零个或多个字母或数字:
WORD = LETTER [ LETTER DIGIT ]*
转换为JavaScript正则表达式语法,这给了我们:
WORD = [a-zøåæäöüß][a-zøåæäöüß\d]*
对于整个输入(使用锚点):
/^[a-zøåæäöüß][a-zøåæäöüß\d]*(?:[,\-][a-zøåæäöüß][a-zøåæäöüß\d]*)*$/i
(这是WiktorStribiżew的回答。)
自下而上的视图
我们首先查看允许的字符。我们知道第一个字必须是一个字母。之后,可以有零个或多个输入元素:
INPUT = LETTER ELEMENT*
每个元素都是
ELEMENT = [ LETTER DIGIT ] | [ COMMA DASH ] LETTER
将其翻译成JavaScript会给我们:
/^[a-zøåæäöüß](?:[a-zøåæäöüß\d]|[,\-][a-zøåæäöüß])*$/i
这两个正则表达式是等价的。自下而上的正则表达式更短,包含更少的重复代码。另一方面,如果输入字符串主要是字母数字,并且破折号/逗号相对较少,则自上而下的正则表达式可能在某些正则表达式引擎上运行得更快。如果你的输入很短,你可能并不关心微小的性能差异。
这是您(修订)要求的直接编码:
/^[a-zøåæäöüß](?:(?:[a-zøåæäöüß\d]|[,\-][a-zøåæäöüß])*[,\-]?[a-zøåæäöüß])?$/i
想法是匹配一个字母,然后是
每个中间体都是
击>答案 1 :(得分:1)
您可以使用
function addoc{
var name = document.getElementById("nomoc").value;
var qty = document.getElementById("qtyoc").value;
var sku = document.getElementById("skuoc").value;
var prov = document.getElementById("provoc").value;
var link = document.getElementById("link").value;
var vt = document.getElementById("vtoc").value;
var vd = document.getElementById("vdoc").value;
var obs = document.getElementById("obsoc").value;
$.get("funciones.php", {
function : 34,
name : name,
qty : qty,
sku : sku,
prov : prov,
link : link,
vt : vt,
vd :vd,
obs : obs
}, function(data){});
};
请参阅regex demo
<强>详情:
/^[a-zøåæäöüß][a-z0-9øåæäöüß]*(?:[-,][a-zøåæäöüß][a-z0-9øåæäöüß]*)*$/i
- 字符串开头^
- 来自已定义集合的信件[a-zøåæäöüß]
- 来自已定义集合的0+位数字母[a-z0-9øåæäöüß]*
- 零个或多个序列:
(?:[-,][a-zøåæäöüß][a-z0-9øåæäöüß]*)*
- [-,]
或-
,
- 来自已定义集合的信件[a-zøåæäöüß]
- 来自已定义集合的0+位数字母[a-z0-9øåæäöüß]*
- 字符串结束。答案 2 :(得分:-1)
试试这个:(允许逗号或短划线后的字母和数字)
/^[a-zøåæäöüß]([a-z0-9øåæäöüß]|(,|-)[a-z0-9øåæäöüß])*[a-zøåæäöüß]$/i
或者:(允许逗号或短划线后的字母)
/^[a-zøåæäöüß]([a-z0-9øåæäöüß]|(,|-)[a-zøåæäöüß])*[a-zøåæäöüß]$/i