禁止输入标点符号
Disallow punctuation in input
我想知道是否可以创建一个允许数字、字母和空格但不允许标点符号的正则表达式。
发生的事情是,我有一个在线贷款申请,在街道地址字段中,一些用户在输入中添加了逗号(,)。将应用程序导出到CSV后,由于地址字段中有逗号,CSV文件在错误的位置有逗号。
我已经用正则表达式玩了几个小时了,它运行得很好,但它不可能是完美的。我时不时会收到一个无法验证但没有标点符号的地址。否则它将是一个可接受的输入,但regex不允许对其进行验证。
因此,与其我试图规定什么是允许的(数字、空格、字母),我能不能不规定什么是不允许的(标点符号)?后者比前者更有意义。
为了提供信息,我已经包括了已提交的地址列表,我用它来测试我的正则表达式。我还包括了我一直在处理的正则表达式.任何指导或帮助都非常感谢
注意:我在无效输入的地方添加了注释。在无效输入下面,我放置了一份经过编辑的输入副本,该副本现在是有效的。
地址:
3 TINDERWOOD CRESCENT
117HEIDERAND FLATS EESSENTHOUT STREET HEIDERAND 6511 -- no space after number
117 HEIDERAND FLATS EESSENTHOUT STREET HEIDERAND 6511
3289 ext5 edenpark
120411 mpande loation
1433b Moulton Avenue
1433 b Moulton Avenue
4 diesel rd
10821 Morubisi Street
Unit 44 Charis Place, Prosperity Road, Groblerspark -- punctuation
Unit 44 Charis Place Prosperity Road Groblerspark -- starts with word
44 Charis Place Prosperity Road Groblerspark
p box 3581 -- invalid street address
82 Akasia laan
987 leruleng sectionsaulspoort
1 lenton drive
1179 gugulethu street
1 lenton drive
10269verdwaal2 -- no spaces
10269 verdwaal 2
15 Prinsloo Street
1179 gugulethu street
13 Adler str, Eden Park -- has punctuation
13 Adler str Eden Park
410 wonderzicht, 538 de beerstr -- has punctuation
410 wonderzicht 538 de beerstr
1551 -- invalid street address
52 Koedoe Ave
26a high road orchards
Musina ext9 4363 -- number in wrong place - See below
4363 Musina ext9
18 Replubliek street
753 steve biko avenue unit2
221 Buitekant straat
54 Zone A
B1287 UMSOLWA ROAD
54 Zone A
6574 LETLHODI STREET UNIT 14
27 k street
9635 Zanemvula street
2667 nthatisi Street
498 CESSNA AVENUE
maromene 17 -- number in incorrect place - see below
17 maromene
F1 Ngoje cres MarainnhillM
6574 letlhodi street unit 14
21 tecomastreet
21 tecomastreet
07 Frara Drive
6440 MAYANA STREET THEMBALETHU GEORGE 6529
no.87 Vista Villas -- has word before number and has punctuation
87 Vista Villas
12 jama street z section --- !!!!!!!!!!!!!!!!!!!!!!!!
B1287 Umsolwa road
B 1287 Umsolwa road -- space after B
6574 letlhodi street
7658 Itsomo Steet Ext6
5dharrisson str -- no space fter number
5d harrisson str
322 Lenham Drive, Lenham -- has punctuation
322 Lenham Drive Lenham
schoolstreet 3 -- name before number
3 schoolstreet
50 Hercules Court
1546 sefatsa stand
61 sixwila street
20800 mamelodi east
colchester crescent
12 Iraq Street
12 moshoeshoe str
21 vansoelen street
12 moshoeshoe str
4102 Geelhout Street
ward 16, umzumbe, hibberdene -- has punctuation
ward 16 umzumbe hibberdene
839 Maokeng ext
28caledon drive
34 Leo ave
6423 Bandura Street, Willow Manor Ext. 1
8541 Snake Park
7 INSISWA WAY EXT 12 SHERWOOD PARK 7349
plot 50 kareebos
404 Windermere street
404 Windermere street
404 Windermere street
68 Flamink Street
68 Flamink Street
71 Eagle Dawn Zeiss road
block r3 room 105 n2 gateway
50 plein str
B206 Chapters
225 Buitenkant Street
9 Chestnut street Bonteheuwel
1740a Ben Naude Drive Zone 2
Droedam Farm
16 Aberfeldy Road The Hill
11th road 25 simonsig noordwyk
49 Soetdoring
Allensnek
12935
29 likhonda street
6 Matume street
Plot 88
22 Community Road
1100 kwamakhutha township, po amanzimtoti
9 balmoral heights, balmoral road
3 makubalo streets
3951 umthungwa street birch acres ext 23
12986 Walter Sisulu Street
11138 nongoma str
51 rudloff rd
10 Villa Palazzo, Belami Drive
321 Francis Baard Street
65 9 th street
35 Fiskaal street
14 olive street
9 manho street
38 victoria road
354 Ethafeni Section
16 Arkeldien Street
6.5 Boundary Road
100 Vlamboom Road
902 Mquma Street Bophelong
35 amsterdam street
55 fanplam gardens palmview
6213 Zone 12 Extion Sebokeng
stand no.043 ooslope
3 MURISON STREET
177 govan mbeki township
9 Chestnut street Bonteheuwel
4347 BLOCK B
1a roy cambell street
146 poole avenue
116 Woburn Street
545 Phase 5B Buhlepark
33 vos street
37 fifth street , rusthof
18 Marinda Crescent Marinda
16 chromite ave
13 kanti street 35263,Harare
67 Third Street
270 queen elizabeth ave
30 Victoria
9 manho str
26 Liebenhof Flats Young Str
1 Carter Street
10 Villa Palazzo, Belami Drive
11 vlasblomsingel progress
block 44, 513 sunset avenue
1073 mphafa road
1344 Pickerel place
1073 mphafa road
sweatpealaan 2751
44 Brummerstreet
151 Ext 3
433 10 kodi street
617 rondomstraat Louterwater
10 GREEN STREET
149 tamsanqa street
3 Newfeld Street
76 Dorp Street
5 Mabille Street
28 heathbury place
2356 joyce ndinisa road
A13 Lekoane street
Regex:
/^('w*)('d+)('w)?'s('w+('s?'w+?))+$/
为什么需要一个正则表达式?你可以做这样简单的事情:
var address = "My address, with commas not allowed";
var newAddress = address.replace(",","");
正如我在评论中所说,使用这种方法,您可以让用户按照自己的意愿编写地址,但不会破坏CSV分隔符。你可以写这样的地址
无处街道Nº10-2(12000)
它不会破坏你的CSV。使用正则表达式,此地址将为:
无处街道N 10 2 12000
这是可读性较差的。
更好的解决方案是用逗号转义字段。看见https://stackoverflow.com/a/769675/227299.您还需要转义任何双引号。
如果你在JavaScript中这样做,你可以做:
function escapeCsvValue(val) {
if (val.indexOf(',') > -1 || val.indexOf('"') > -1) {
return '"' + val.replace(/"/g, '""') + '"';
}
return val;
}
var csv = [
['Name, CommaForFun', 'Address'],
['Jack','Calle Ocidental, 2'],
['Jill O"quote"','125, The "cool" place'],
['John','123 Main st'],
];
var escapedCsv = csv.map(function(row){
return row.map(escapeCsvValue).join(',');
});
var csvString = escapedCsv.join(''n');
console.log(csvString);
/*
"Name, CommaForFun",Address
Jack,"Calle Ocidental, 2"
"Jill O""quote""","125, The ""cool"" place"
John,123 Main st
*/
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 可以't让我的if语句处理js中的html表单输入
- 当所有输入文本字段都为空时,禁止表单提交,但当jquery中的任何字段不为空时允许提交
- 如何禁止在纯JavaScript形式输入的表单中输入特定字符
- 禁止输入引号的最佳方式
- 在 WebKit 中禁止单击<输入类型=“文件”>
- 输入表单中的禁止字符
- 禁止输入前导0
- 达到输入最大长度后禁止键入
- 禁止在输入字段中按住回车键
- 如何禁止输入按钮触发onkeyup事件
- 禁止输入标点符号
- 在输入了一定数量的字符后,禁止用户在文本区域字段中输入文本
- 禁止提交空白输入和文本区域
- javascript是否禁止将输入类型从password更改为password ?
- 禁止输入进入文本区域
- jQuery方法,该方法禁止输入某些字符
- 检测用户输入是否包含JavaScript中的禁止字符
- 除非选中复选框,否则禁止在文本框中输入文本
- 如何使用Angular.js禁止只允许字符进入输入字段